使用 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]
這一行告訴作業系統指令碼里的程式碼使用那一個 shell 來執行。這裡的 expect 其實和 linux 下的 bash、windows 下的 cmd 是一類東西。
注意:這一行需要在指令碼的第一行。
2. [set timeout 30]
這是設定超時時間的,計時單位是:秒
3. [spawn ssh -l username 192.168.1.1]
spawn是進入expect環境後才可以執行的expect內部命令,如果沒有裝expect或者直接在預設的SHELL下執行是找不到spawn 命令的。所以不要用 “which spawn“之類的命令去找spawn命令。好比windows裡的dir就是一個內部命令,這個命令由shell自 帶,你無法找到一個dir.com 或 dir.exe 的可執行檔案。
它主要的功能是給ssh執行程式加個殼,用來傳遞互動指令。
4. [expect "password:"]
這裡的expect也是expect的一個內部命令,有點暈吧,expect的shell命令和內部命令是一樣的,但不是一個功能,習慣就好了。這個 命令的意思是判斷上次輸出結果裡是否包含“password:”的字串,如果有則立即返回,否則就等待一段時間後返回,這裡等待時長就是前面設定的30 秒
5. [send "ispass\r"]
這裡就是執行互動動作,與手工輸入密碼的動作等效。
溫馨提示: 命令字串結尾別忘記加上“\r”,如果出現異常等待的狀態可以核查一下。
6. [interact]
執行完成後保持互動狀態,把控制權交給控制檯,這個時候就可以手工操作了。如果沒有這一句登入完成後會退出,而不是留在遠端終端上。如果你只是登入過去執行
#!/usr/bin/expect #注意安裝的路徑,不確定 whereis expect 一下
# Change a login shell to bash
set user [lindex $argv 0]
spawn bash $user
expect "]:"
send "/bin/bash "
expect eof
exit
在 Linux 命令列指令碼中執行 sudo 時自動輸入密碼
相關文章
- 如何在 Linux 中不輸入密碼執行 sudo 命令Linux密碼
- 在 Linux 中執行特定命令而無需 sudo 密碼Linux密碼
- 在輸入linux sudo密碼的時候顯示星號Linux密碼
- 如何在 Linux 啟動時自動執行命令或指令碼Linux指令碼
- LINUX 自動執行指令碼的命令配置Linux指令碼
- ssh自動輸入密碼指令碼 切換目錄指令碼密碼指令碼
- 直播app原始碼,登入時自動輸入密碼/自動記住密碼APP原始碼密碼
- 使ssh不用輸入密碼(指令碼執行scp)密碼指令碼
- ansible基於密碼sudo執行命令密碼
- Linux 定時執行指令碼、命令Linux指令碼
- Linux管理指令碼之自動執行指令碼Linux指令碼
- windows自動登入linux 並執行指令碼WindowsLinux指令碼
- shell中使用sudo不輸入密碼密碼
- 啟動vi時自動執行的指令碼指令碼
- scp後臺靜默執行(使用expect自動輸入密碼)密碼
- Shell批量複製或執行檔案(自動輸入密碼)密碼
- Linux(CentOS)啟動時自動執行指令碼(rc.local)LinuxCentOS指令碼
- 自動輸入密碼使用root許可權開啟shell指令碼密碼指令碼
- Linux、UNIX設定開機自動執行命令、指令碼配置Linux指令碼
- 使用php作linux自動執行指令碼PHPLinux指令碼
- linux下rman增量備份指令碼以及指令碼自動執行Linux指令碼
- Linux啟動/關機時執行指令碼Linux指令碼
- win 開機自動輸入密碼 並設定 cmder 開機自啟執行密碼
- 怎樣不需要再sudo輸入密碼密碼
- 在 Linux 中執行.sh 指令碼 No such file or directoryLinux指令碼
- 如何在Docker容器啟動時自動執行指令碼Docker指令碼
- UNIX crontab自動執行指令碼指令碼
- 在Linux中,如何編寫一個指令碼來自動執行日常任務?Linux指令碼
- 在linux上定期執行命令、指令碼(cron,crontab,anacron)Linux指令碼
- linux 指令碼切換使用者不用輸入密碼Linux指令碼密碼
- 自定義支付密碼輸入view、密碼鍵盤並自動檢測6位密碼輸入完全密碼View
- 如何無需每次輸入密碼,在 Windows XP 中啟用自動登入?薦密碼Windows
- 在指令碼中呼叫git命令:指定git命令執行上下文指令碼Git
- scp 手動輸入密碼後後臺執行的方法密碼
- Linux定時執行.sh指令碼Linux指令碼
- [Linux] SSH配置了免密碼登入,登入時還要輸入密碼Linux密碼
- shell指令碼linux命令連續執行指令碼Linux
- 通過RFT命令列執行測試指令碼命令列指令碼