expect
通常用來自動輸入一些指令碼,比如我要ssh
或者scp
時,通常會讓你確認,是否繼續,或者輸入密碼。
這種情況有兩種解決方式:
安裝秘鑰,使得ssh
和scp
都能免密碼操作、免密碼登入。
使用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...