使用 expect 自動登入

2022-09-14 10:27:11 字數 997 閱讀 6191

今天在玩linux,在root與普通使用者之間切換,老是要輸入密碼,然後突然有個想法,自己寫個shell指令碼執行自動切換此不是更方便,瞎搞了一下不行,然後google上搜一下,原來純shell做不了這個事,要用expect,以下安裝步驟:

2:安裝tcl:進入tcl目錄(cd tcl),你會看到有乙個unix目錄與乙個win目錄,把unix裡的檔案拷貝到generic目錄(要不然之後編譯expect就會出錯,出錯原因可以檢視 tclport.**件,裡面有個 include "tclunixport.h",不拷貝的話會找不到這個檔案),執行:

cd generic

cp ../unix/* .

然後開始配置與編譯了,

./configure --prefix=/usr/local/tcl --enable-shared

make && make install

3:搞定tcl之後,開始搞expect了,進入expect目錄,執行:

./configure --prefix=/usr/local/expect --with-tcl=/usr/local/tcl/lib --with-tclinclude=/root/upload/expect/generic (注:這個是剛才解壓tcl原始碼的目錄)

make && make install

4:因為要寫腳步,建立乙個/usr/local/expect/bin/expect的軟鏈結到/usr/bin/expect更方便點, ln /usr/local/expect/bin/expect /usr/bin/expect

5:都配置好了,開始寫腳步啦^-^,切換到普通使用者,su dylan ,vi root.sh

**如下:

#!/usr/bin/expect

spawn su root #執行切換root使用者命令

expect "password" #匹配要輸入密碼的提示符

send "yourpassword\r" #傳送root使用者的密碼

interact #結束

使用expect自動登入

expect是乙個會話程式,根據內容反饋來做出應答,python也有乙個相關庫pexpect。用它進行自動登入,不是用authorized key,而是把使用者名稱密碼寫死在指令碼裡,來實現自動登入,畢竟總去上傳key也不現實。我在這兒修改了下,優先接受命令行引數,如果沒有傳則使用預設值。把指令碼放...

使用expect實現自動互動,自動登入指令碼

使用expect實現自動互動,自動登入指令碼 指令碼 如下 usr bin expect set timeout 30 spawn ssh l username 192.168.1.1 expect password send ispass r interact 1.usr bin expect 這...

expect實現自動登入指令碼

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