Linux expect指令實現ssh自動登陸腳本

寫在前面:目前在公司是一人一臺虛擬機,大多數工做都要在虛擬機上完成,爲此天天要執行不少次【ssh xxx@xxxxxx】指令登陸虛擬機;有不少方式解決這個問題,如使用xshell、secureCRT等工具記錄經常使用的鏈接,我就寫了一個簡單的腳本實現一鍵登陸~git

login.sh腳本內容以下:shell

#!/usr/bin/expect
spawn ssh xxx@xxxxxx
expect "*password:"
send  "密碼\r"
interact

再將【./login.sh】配置別名alias,或移動到可執行目錄中,便可實現【login】一鍵登陸;服務器

expect是一個處理交互的指令,經過expect咱們能夠把交互過程寫到Shell腳本里以實現一些自動化操做~ssh

expect有四個核心的指令:工具

  • spawn:啓動新進程,後跟新進程要執行的指令;
  • expect:指定要監聽的字符串,若是spawn進程返回了匹配的字符串(如標準輸入的提示信息),則觸發send;
  • send:發送指定的字符串到spawn進程,代替標準輸入;
  • interact:用戶參與交互;

對於login.sh的執行過程爲:
【spawn】啓動一個新進程執行ssh登陸指令,【expect】監聽到標準輸入的提示信息『xxx@xxxxxx’s password』符合匹配規則,觸發【send】發送密碼代替手動輸入,完成登陸,【interact】用戶參與交互,此時已登陸上了虛擬機;spa

使用expect還能夠完成如:批量更新git代碼庫、自動登陸FTP服務器等功能~FYI~code

相關文章
相關標籤/搜索