expect實現「scp ssh自動輸入密碼「

2021-10-09 17:40:39 字數 821 閱讀 3997

expect通常用來自動輸入一些指令碼,比如我要ssh或者scp時,通常會讓你確認,是否繼續,或者輸入密碼。

這種情況有兩種解決方式:

安裝秘鑰,使得sshscp都能免密碼操作、免密碼登入。

使用expect配置一些自動化的應答指令碼。

由於我是通過docker容器訪問伺服器,所以推薦第二種。

一般來說,各個linux版本,通過各自的包管理器,就能直接安裝,比如:

yum install -y expect
或者使用rpm包:

expect指令碼和shell指令碼,有不少區別,特別是變數的使用上。考慮到expect輸入的使用者、密碼,通常需要保密,直接給出最佳處理方案:就是在shell中儲存變數,然後構造一段expect指令碼:

# 以下是upload.sh指令碼內容

#! /bin/bash

upload(

) org_folder=$

dest_folder=$

/usr/bin/expect <<

eofset timeout -1

spawn scp -r $

$expect "password:"

send "$\r"

eof}

# 指令碼呼叫

source upload.sh && upload

完畢。

用expect實現SCP SSH自動輸入密碼登入

在命令列ssh遠端登入伺服器和scp遠端傳輸檔案都需要互動式輸入密碼,無法像mysql登入資料庫 mysql uroot p123456一樣直接完成。其實可以用指令碼依賴expect來達到這一目的。首先安裝expect root yqtrack jumphost src yum y install ...

expect實現自動登陸

1.首先安裝expect2.指令碼編寫,下面是乙個通過ssh登陸遠端機器 gll5530 的例子,密碼 wzj.1989 opt exptools bin expect f set timeout 30 spawn ssh gll5530 expect password send wzj.1989 ...

expect實現自動登入指令碼

寫在前面 目前在公司是一人一台虛擬機器,大多數工作都要在虛擬機器上完成,為此每天要執行很多次 ssh 指令登入虛擬機器 有很多方式解決這個問題,如使用xshell securecrt等工具記錄常用的連線,我就寫了乙個簡單的指令碼實現一鍵登入 login.sh指令碼內容如下 usr bin expec...