linux透過shell指令碼實現ssh互動式自動化
導讀 | expect是一個免費的程式設計工具語言,用來實現自動和互動式任務進行通訊,而無需人的干預(如:藉助Expect處理互動的 ,可以將互動過程:ssh登入,ftp登入等寫在一個 上,使之自動化完成。尤其適用於需要對多臺伺服器執行相同操作的環境中,可以大大提高系統管理人員的工作效率) |
我們透過 可以實現簡單的控制流功能,如:迴圈、判斷等。但是對於需要互動的場合則必須透過人工來干預,有時候我們可能會需要實現和互動程式如telnet伺服器等進行互動的功能。而expect就使用來實現這種功能的工具。expect是一個免費的程式設計工具語言,用來實現自動和互動式任務進行通訊,而無需人的干預(如:藉助Expect處理互動的 ,可以將互動過程:ssh登入,ftp登入等寫在一個 上,使之自動化完成。尤其適用於需要對多臺伺服器執行相同操作的環境中,可以大大提高系統管理人員的工作效率)
首先需要有expect:
可以透過以下命令檢視是否安裝,如果未安裝直接 yum install expect,如果不行請自行百度安裝。
[root@localhost home]# whereis expect expect: /usr/bin/expect /usr/share/man/man1/expect.1.gz [root@localhost home]# expect
編寫指令碼如下:
#!/bin/bash passwd="123456" /usr/bin/expect <<-EOF set timeout 50 spawn ssh root@10.10.22.38 expect { "*yes/*" { send "yes\r"; exp_continue } "*password:" { send "$passwd\r" } } expect "*]*" send "df -h\r" EOF
解釋一下:
/usr/bin/expect <<-EOF #開始用expcet執行標誌 EOF #結束標誌 expect {} #是expect要實現互動的命令集 [root@localhost home]# ssh root@10.10.22.38 "*yes/*" "*password:" { send "$passwd\r" } #如上如果遇到返回值 *代表無限字元,後面是password:則執行 send傳送字串 \r回車 expect "*]*" #等待出現]執行下一條命令 send "df -h\r" #執行命令並回車。 登入後複製 #!/bin/bash passwd="admin" /usr/bin/expect <<-EOF set timeout 50 spawn telnet 0 expect { "Login*" { send "admin\r"} } expect { "*assword:" { send "$passwd\r" } } expect { "*admin>" {send "security enable protocol-detect\r"} } expect { "*admin>" {send "security set port-abnormal detect 2\r"} } expect { "*admin>" {send "security show protocol-detect status\r"} } expect { "*admin>" {send "security show port-abnormal-detect level\r"} } expect { "*admin>" {send "exit\r"} } EOF
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2909342/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自動批次實現linux機器ssh免密shell指令碼Linux指令碼
- Linux Shell互動式自動化運維程式Linux運維
- shell指令碼-免互動指令碼
- Linux通過Shell指令碼命令修改密碼不需要互動Linux指令碼密碼
- 建立互動式shell指令碼對話方塊指令碼
- 自動化指令碼安裝mysql shell指令碼範例指令碼MySql
- [shell]shell指令碼實現每天自動抽取資料插入hive表指令碼Hive
- shell擴充套件——免互動指令碼套件指令碼
- 【Linux】【Shell】主控指令碼實現Linux指令碼
- 案例八:Shell自動化管理賬號指令碼指令碼
- 透過標籤清理微信好友:Python自動化指令碼解析Python指令碼
- 實現指令碼自動部署docker指令碼Docker
- 透過CRM系統實現工作流程自動化
- specjvm自動化指令碼JVM指令碼
- python實現自動搶課指令碼Python指令碼
- 透過Shell指令碼自動安裝Hive&JDBC測試&提供CDH5網盤地址指令碼HiveJDBCH5
- shell 備份檔案指令碼+自動清理指令碼
- 透過ssh工具啟動VNC,Windows系統如何透過ssh工具啟動VNCVNCWindows
- 如何透過前端表格控制元件實現自動化報表?前端控制元件
- 透過自動化運維實現無人值守的故障自愈運維
- vue自動化部署指令碼Vue指令碼
- Dockerfile---指令碼自動化Docker指令碼
- 實現一鍵式自動化操作(快速建立 Python 與 Shell 檔案)Python
- JMeter 介面自動化測試(手工轉自動化指令碼)JMeter指令碼
- Linux Shell指令碼Linux指令碼
- PHP 如何透過 JSON-RPC 呼叫實現以太坊互動PHPJSONRPC
- flyway實現java 自動升級SQL指令碼JavaSQL指令碼
- 利用Python實現自動掃雷小指令碼Python指令碼
- shell指令碼實現多臺伺服器自動巡檢--可參考學習指令碼伺服器
- 透過 GitHub Actions 實現程式碼的自動編譯和釋出Github編譯
- 已有 python 自動化框架,透過 start.py 執行指令碼,現在想建立一個平臺,透過頁面下發介面,傳入引數到 start.py 並啟動指令碼,求教Python框架指令碼
- mydumper自動化安裝指令碼指令碼
- Linux 新增指令碼開機自啟動Linux指令碼
- linux下啟動和終止JAVA程式shell指令碼LinuxJava指令碼
- Shell指令碼實現生成SSL自簽署證書指令碼
- 透過運維編排實現自動化智慧運維與故障自愈運維
- 賦能您的CRM,透過Infobip實現全渠道營銷自動化
- 《轉載》Jenkins持續整合-自動化部署指令碼的實現《python》Jenkins指令碼Python