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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux命令(27):shell 结合expect,多服务器批量分发数据

發布時間:2025/5/22 linux 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux命令(27):shell 结合expect,多服务器批量分发数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
shell 結合expect 寫的批量scp腳本工具 except安裝:http://www.cnblogs.com/lovychen/p/6525623.html expect用于自動化地執行linux環境下的命令行交互任務,例如scp、ssh之類需要用戶手動輸入密碼然后確認的任務。有了這個工具,定義在scp過程中可能遇到的情況,然后編寫相應的處理語句,就可以自動地完成scp操作了

在部署一個任務時,其中有一項必須的過程就是將一些文件,如安裝包發送到大量的服務器上去。雖然已有宇哥的腳本可用:通過paramiko模塊提供的ssh和scp功能編寫的python腳本。但我到現在還在對python的恐懼之中(雖然已經在空閑時間努力去學習了),所以使用了shell和expect腳本結合的方式,寫了這個批量scp的腳本工具。
expect用于自動化地執行linux環境下的命令行交互任務,例如scp、ssh之類需要用戶手動輸入密碼然后確認的任務。有了這個工具,定義在scp過程中可能遇到的情況,然后編寫相應的處理語句,就可以自動地完成scp操作了。
需要expect工具的話可以在linux環境中使用apt-get或pacman這些包管理工具去獲取安裝,或是到expect開源項目的網站:http://expect.sourceforge.net/?來獲取。
安裝expect之后,可以嘗試使用以下的代碼來完成對單個服務器的scp任務:

1 #!/usr/bin/expect 2 set timeout 10 3 set host [lindex $argv 0] 4 set username [lindex $argv 1] 5 set password [lindex $argv 2] 6 set src_file [lindex $argv 3] 7 set dest_file [lindex $argv 4] 8 spawn scp -r $src_file $username@$host:$dest_file #add -r cam move dir 9 expect { 10 "(yes/no)?" 11 { 12 send "yes\n" 13 expect "*assword:" { send "$password\n"} 14 } 15 "*assword:" 16 { 17 send "$password\n" 18 } 19 } 20 expect "100%" 21 expect eof

注意代碼剛開始的第一行,指定了expect的路徑,與shell腳本相同,這一句指定了程序在執行時到哪里去尋找相應的啟動程序。代碼剛開始還設定了timeout的時間為10秒,如果在執行scp任務時遇到了代碼中沒有指定的異常,則在等待10秒后該腳本的執行會自動終止。

從以上代碼剛開始的幾行可以看出,我為這個腳本設置了5個需要手動輸入的參數,分別為:目標主機的IP、用戶名、密碼、本地文件路徑、目標主機中的文件路徑。如果將以上腳本保存為expect_scp文件,則在shell下執行時需要按以下的規范來輸入命令:
./expect_scp 192.168.75.130 root 123456 /root/src_file /root/dest_file

以上的命令執行后,將把本地/root目錄下的src_file文件拷貝到用戶名為root,密碼為123456的主機192.168.75.130中的/root下,同時還將這個源文件重命名為dest_file。

spawn代表在本地終端執行的語句,在該語句開始執行后,expect開始捕獲終端的輸出信息,然后做出對應的操作。expect代碼中的捕獲的(yes/no)內容用于完成第一次訪問目標主機時保存密鑰的操作。有了這一句,scp的任務減少了中斷的情況。代碼結尾的expect eof與spawn對應,表示捕獲終端輸出信息的終止。

有了這段expect的代碼,還只能完成對單個遠程主機的scp任務。如果需要實現批量scp的任務,則需要再寫一個shell腳本來調用這個expect腳本。

shell腳本:

代碼如下: 1 #!/bin/sh 2 list_file=$1 3 src_file=$2 4 dest_file=$3 5 cat $list_file | while read line 6 do 7 host_ip=`echo $line | awk '{print $1}'` 8 username=`echo $line | awk '{print $2}'` 9 password=`echo $line | awk '{print $3}'` 10 echo "$host_ip" 11 ./expect_scp $host_ip $username $password $src_file $dest_file 12 done

?

指定了3個參數:列表文件的位置、本地源文件路徑、遠程主機目標文件路徑。需要說明的是其中的列表文件指定了遠程主機ip、用戶名、密碼,這些信息需要寫成以下的格式:
IP username password

中間用空格或tab鍵來分隔,多臺主機的信息需要寫多行內容,如:
192.168.75.130 root 123456
192.168.75.131 knktc testpass

這樣就指定了兩臺遠程主機的信息。注意,如果遠程主機密碼中有“$”、“#”這類特殊字符的話,在編寫列表文件時就需要在這些特殊字符前加上轉義字符,否則expect在執行時會輸入錯誤的密碼。

對于這個shell腳本,保存為batch_scp.sh文件,與剛才保存的expect_scp文件和列表文件(就定義為hosts.list文件吧)放到同一目錄下,執行時按照以下方式輸入命令就可以了:
./batch_scp.sh ./hosts.list /root/src_file /root/destfile

or

sh batch_scp.sh hosts.list /root/src_file /root/destfile

hosts.list:服務器的列表

/root/src_file:需要分發的文件

/root/destfile:需要存儲到目標服務器的地址
用這兩個腳本文件,就可以簡單地完成批量scp的任務了。
其實批量scp的任務并不難,但是批量ssh的任務可能就會遇到麻煩了。

轉載于:https://www.cnblogs.com/lovychen/p/6238862.html

總結

以上是生活随笔為你收集整理的Linux命令(27):shell 结合expect,多服务器批量分发数据的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 精品国产免费一区二区三区 | 日本免费看 | 精品国产一区二区三区噜噜噜 | 日日摸天天添天天添破 | 日韩美女在线 | 免费极品av一视觉盛宴 | 青娱乐在线免费观看 | 狠狠狠狠干| 九九国产 | 全程偷拍露脸中年夫妇 | 香蕉在线视频播放 | 亚洲偷偷 | 天天色天天综合 | 日韩在线观看免费 | 波多野结衣在线视频播放 | 精品免费 | 青青色在线观看 | 亚洲av无码国产综合专区 | 黄色大片黄色大片 | a级黄色录像 | 一区二区三区午夜 | 欧美视频在线观看 | 涩涩网站在线观看 | 神马久久香蕉 | 国产精品美女久久久久av爽 | av一本在线 | 9i精品福利一区二区三区 | 蜜桃臀av | 美女擦边视频 | www.色网 | 龚玥菲一级淫片 | 四虎影库在线播放 | 午夜av在线免费观看 | 最近高清中文在线字幕在线观看 | 色婷婷亚洲一区二区三区 | 亚洲综合av网 | 特黄一区 | 日韩区在线| 中文字幕欧美日韩 | 亚洲成人av电影网站 | 久久精品视频8 | 日本在线视频免费 | 2021久久 | 少妇一级淫片免费播放 | 一区一区三区产品乱码 | 国产一级黄 | 秋霞中文字幕 | 性史性dvd影片农村毛片 | 亚洲人成人一区二区在线观看 | 国产人妻精品一区二区三 | 国产污视频网站 | 麻豆 美女 丝袜 人妻 中文 | 国产成人精品一区在线播放 | 黄色xxxx | 狠狠干夜夜操 | 九九在线观看高清免费 | 不卡一区二区在线 | 日韩精品国产一区二区 | 欧美福利一区二区 | av在线免费不卡 | 免费在线看污 | 大乳护士喂奶hd | 这里只有精品国产 | 亚欧精品视频一区二区三区 | 伦伦影院午夜理伦片 | xxxxx国产 | 久九九 | 亚洲性图一区二区 | 麻豆一区二区99久久久久 | 日本成人免费观看 | 锦绣未央在线观看 | 亚洲精品国产精品乱码 | av资源在线免费观看 | www.午夜av | 亚洲精品在线91 | 中国毛片在线 | 看特级毛片 | 亚洲天堂免费视频 | 日本亚洲色大成网站www久久 | 乱老熟女一区二区三区 | 性欧美videos高清hd4k | 日韩一区二区三区电影 | 日本黄色片在线播放 | 免费的黄色的网站 | 337p粉嫩大胆色噜噜狠狠图片 | av男人在线| 国产a视频精品免费观看 | 无码人妻丰满熟妇区毛片蜜桃精品 | 超碰在线9 | 欧美在线中文 | 激情视频网址 | 欧美成人黄色 | 少妇被躁爽到高潮无码人狍大战 | 青青青青草 | 在线观看黄色免费视频 | 人民的名义第二部 | 欧美日韩中文一区 | 天天综合天天做天天综合 | 亚洲欧美网站 |