Linux 下使用指令碼進行SSH授權及命令操作

2021-07-28 03:29:34 字數 1183 閱讀 6774

使用 expect 進行操作:

上面指令碼中的自動互動用到了expect,那麼什麼是expect呢?

expect是乙個基於tcl的用於自動互動操作的工具語言,它適合用來編寫需要互動的自動化指令碼,比如上面提到的ssh輸入使用者名稱密碼,自動ftp等等場景。

除了具有tcl的語法,expect提供了幾個常用的命令:

1. send

用來傳送乙個字串,比如 send "hello world"。

初始情況下,這個字串會傳送到標準輸出。如果你用的是max osx或者linux,可以在terminal下直接輸入expect命令並回車,就進入了expect互動環境,此時,輸入send "hello world"就可以看到結果。

一旦你的程式已經與其他程式進行互動,字串就會被傳送到其他程式那裡。如上面的例子指令碼中,我們呼叫send 」$password\r"就是把密碼傳送給ssh連線的伺服器端指定埠。

2. expect

與send相反,expect用來等待你所期望的字串。比如expect "hello"

在expect後面跟的字串中,你可以指定乙個正規表示式。

expect會一直等待下去,除非收到的字串與預期的格式匹配,或者到了超期時間。

3. spawn

spawn用來啟動乙個新的程序,比如上面的spawn ssh -d $port $user@$host,expect會執行命令「ssh -d $port $user@$host」。

在互動式的場景中,當你輸入命令後,可能伺服器端會返回一些操作提示符,以讓你輸入命令。expect提供了這樣三個常用的命令,spawn, expect和send,恰好滿足這種需要。把它們結合起來使用,可以實現很多簡單的自動化指令碼。

其它常用的命令還有:interact,比如你通過指令碼自動連線到了某個ftp,並輸入了使用者名稱密碼,此時需要人工輸入一些命令,就可以使用interact命令,它會把指令碼的控制權交給使用者;sleep,等待多少秒等等。

由於expect是從tcl繼承下來的,所以也支援tcl的語法和命令,比如變數宣告、流程控制等等。

上面指令碼的一些解釋:

1. set timeout 300:設定超時時間300s。如果設為-1,代表永不超時。

2. expect eof:等待接受檔案結束符。 

Linux下使用SSH進行遠端登入

1.介紹 首先ssh是什麼?ssh secure shell 是linux unix mac及其他網路裝置最常用的遠端cli管理協議,ssh使用秘鑰對資料進行加密,保證了遠端管理資料的安全性。ssh2是現在廣泛使用的ssh版本 ssh協議使用tcp協議,埠號為22 openssh是ssh的乙個開源程...

使用指令碼進行ssh登入伺服器(Linux新手之路)

前面的部落格完成了乙個簡單的定時刪除日誌的指令碼,但由於現在又多台伺服器,需要在多台伺服器上執行刪除日誌操作的指令碼,有很多辦法,我想到的方法,乙個是,可以將指令碼部署到這些伺服器上,然後在每台伺服器上使用crontab來定時執行,但是如果伺服器太多的話,就比較繁瑣 還有乙個辦法就是通過指令碼去登入...

Linux下shell指令碼實現管理ssh鏈結

sudo apt install expect該檔案用來儲存使用者的ssh鏈結資訊 新建檔案password.lst,然後新增如下內容 序號 ip 埠 使用者 密碼 說明 1 123.56.10.38 22 username password 阿里雲測試伺服器 2 192.168.88.130 22...