expect工具使用
生活随笔
收集整理的這篇文章主要介紹了
expect工具使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
expect腳本同步文件
#!/usr/bin/expect set passwd "1" spawn rsync -av root@192.168.65.130:/tmp/12.txt /tmp/ expect { "yes/no" { send "yes\r"} "password:" { send "$passwd\r" } } expect eof // expect eof會給予一定的時間讓你進行操作 // 如果沒有加expect eof,將導致同步沒執行就斷開連接,這樣是不對的expect腳本指定host和要同步的文件
#!/usr/bin/expect set passwd "1" set host [lindex $argv 0] set file [lindex $argv 1] // 這里只適合同步1個文件 spawn rsync -av $file root@$host:$file expect { "yes/no" { send "yes\r"} "password:" { send "$passwd\r" } } expect eof執行
./5.expect 192.168.65.130 /tmp/12.txt可以通過set timeout來指定超時時間,-1表示永不超時,5表示超時間時間為5s
構建分發系統
需求:生產環境下,需要一次同步多個文件,之前的那個代碼顯然不足以實現功能
核心命令:rsync -av --files-from=list.txt / root@host:/
/usr/local/sbin/rsync.expect腳本如下:
#!/usr/bin/expect set passwd "123456" set host [lindex $argv 0] set file [lindex $argv 1] spawn rsync -avR --files-from=$file / root@$host:/ expect { "yes/no" { send "yes\r"} "password:" { send "$passwd\r" } } expect eof/tmp/file.list內容如下:
#其實質為所需同步的各個文件的絕對路徑 /tmp/12.txt /tmp/2.txt /root/1.sh/tmp/ip.list文件內容
# 要執行的服務器ip,這里要求密碼是相同的;但是這樣有安全隱患 # 可以使用秘鑰認證來登錄,秘鑰可以一致 192.168.65.130 192.168.65.131 192.168.65.132/usr/local/sbin/rsync.sh
#!/bin/bash for ip in `cat /tmp/ip.list` doecho $ip./usr/local/sbin/rsync.expect $ip /tmp/file.list done最后執行/usr/local/sbin/rsync.sh即可
腳本、文件說明
/usr/local/sbin/rsync.expect基本執行的是遠程主機同步文件的功能,它會一次性同步多個文件;文件列表在/tmp/file.list內;/usr/local/sbin/rsync.sh通過循環遍歷ip.list內的要進行同步命令的主機,來循環執行rsync.expect腳本,這樣最終實現多主機多文件同步功能!
批量遠程執行命令
向之前批量同步文件功能類似,我們可以實現批量遠程執行命令
/usr/local/sbin/exe.expect
#!/usr/bin/expect set host [lindex $argv 0] set passwd "1" set cm [lindex $argv 1] spawn ssh root@$host expect { "yes/no" { send "yes\r"} "password:" { send "$passwd\r" } } expect "]*" send "$cm\r" expect "]*" send "exit\r"/usr/local/sbin/exe.sh
#!/bin/bash for ip in `cat /tmp/ip.list` doecho $ip./exe.expect $ip "w;free -m;ls /tmp" done執行exe.sh即可實現批量命令執行
轉載于:https://my.oschina.net/LuCastiel/blog/1626571
總結
以上是生活随笔為你收集整理的expect工具使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL拷贝表的几种方式
- 下一篇: 从“美屋”到“打扮家”:线下VR家居馆中