日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

expect工具使用

發布時間:2024/4/13 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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工具使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。