亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Linux Shell > 正文

shell結合expect寫的批量scp腳本工具

2020-07-27 19:24:58
字體:
來源:轉載
供稿:網友

在部署一個任務時,其中有一項必須的過程就是將一些文件,如安裝包發送到大量的服務器上去。雖然已有宇哥的腳本可用:通過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任務:

#!/usr/bin/expectset timeout 10set host [lindex $argv 0]set username [lindex $argv 1]set password [lindex $argv 2]set src_file [lindex $argv 3]set dest_file [lindex $argv 4]spawn scp $src_file $username@$host:$dest_file expect { "(yes/no)?"  {  send "yes/n"  expect "*assword:" { send "$password/n"} } "*assword:"{ send "$password/n"}}expect "100%"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腳本:

復制代碼 代碼如下:

#!/bin/sh
list_file=$1
src_file=$2
dest_file=$3
cat $list_file | while read line
do
   host_ip=`echo $line | awk '{print $1}'`
   username=`echo $line | awk '{print $2}'`
   password=`echo $line | awk '{print $3}'`
   echo "$host_ip"
   ./expect_scp $host_ip $username $password $src_file $dest_file
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
用這兩個腳本文件,就可以簡單地完成批量scp的任務了。
其實批量scp的任務并不難,但是批量ssh的任務可能就會遇到麻煩了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩性xxxx爱| 久久成年人免费电影| 一区二区欧美在线| 国产精品看片资源| 国产福利精品av综合导导航| 亚洲精品乱码久久久久久按摩观| 欧美激情欧美激情在线五月| 亚洲毛片在线免费观看| 中文字幕视频在线免费欧美日韩综合在线看| 久久久久久中文字幕| 国产精品成人免费视频| 久久久视频精品| 欧美成人激情视频| 国产精品一久久香蕉国产线看观看| 久久精品国产亚洲精品2020| 久久久久久久久久婷婷| 韩日精品中文字幕| 97精品一区二区视频在线观看| 中文字幕一区电影| 色先锋资源久久综合5566| 亚洲日本欧美日韩高观看| 韩曰欧美视频免费观看| 久久中文字幕在线视频| 亚洲自拍高清视频网站| 1769国产精品| 日韩欧中文字幕| 国产福利精品在线| 亚洲综合第一页| 日本欧美精品在线| 色综合久久88色综合天天看泰| 亚洲精品日韩激情在线电影| 91a在线视频| 日产精品99久久久久久| 日韩av在线看| 欧美国产日韩一区二区三区| 日韩欧美亚洲国产一区| 亚洲精品自拍视频| 欧美黑人性猛交| 亚洲国产美女久久久久| 神马国产精品影院av| 国模极品一区二区三区| 国产精品中文久久久久久久| 91九色精品视频| 91亚洲精品久久久| 国产综合在线看| 色悠悠久久88| 91精品啪aⅴ在线观看国产| 懂色aⅴ精品一区二区三区蜜月| 欧美精品久久久久久久免费观看| 国产日韩av在线| 国产精品老女人精品视频| 欧美裸身视频免费观看| 日韩中文字幕在线免费观看| 青草热久免费精品视频| 精品久久久精品| 久久这里只有精品视频首页| 久久国产精品久久精品| 国产在线观看精品一区二区三区| 国产999精品久久久| 久久久亚洲影院| 亚洲欧洲日产国产网站| 国产美女搞久久| 久久精品国产2020观看福利| 国产91免费观看| 国产精品久久久久久久久久久久久| 国产欧美精品在线| 91国内精品久久| y97精品国产97久久久久久| 久热精品视频在线观看一区| 欧美影院成年免费版| 亚洲男人第一av网站| 国产欧美日韩亚洲精品| 欧美日韩在线一区| 欧美黑人一级爽快片淫片高清| 尤物tv国产一区| 国产亚洲精品一区二区| 国产精品igao视频| 久久久免费电影| 日韩成人在线视频网站| 一区二区三区www| 国产日韩在线亚洲字幕中文| 亚洲第一黄色网| 美女av一区二区三区| 国产精品久久激情| 岛国av一区二区三区| 最好看的2019年中文视频| 91夜夜未满十八勿入爽爽影院| 免费97视频在线精品国自产拍| 日韩av一区在线观看| 国模极品一区二区三区| 97精品国产91久久久久久| 精品久久久久久久久久久| 成人午夜两性视频| 最近2019中文字幕第三页视频| 亚洲国产免费av| 国产欧美 在线欧美| 国产视频久久久| 亚洲精品国产拍免费91在线| 久久精品国产电影| 国产精国产精品| 日韩欧美在线网址| 97在线视频免费观看| 国产精品视频久| 日本道色综合久久影院| 久久亚洲精品视频| 亚洲国产高清自拍| 亚洲免费视频在线观看| 日韩精品在线观看一区二区| 午夜精品久久久久久久久久久久| 日本不卡免费高清视频| 麻豆国产精品va在线观看不卡| 成人激情在线播放| 久久免费在线观看| 欧美老少做受xxxx高潮| 亚洲欧美国产一区二区三区| 欧美韩日一区二区| 久久久中精品2020中文| 欧美xxxx做受欧美.88| 国产精品精品一区二区三区午夜版| 一本色道久久综合狠狠躁篇的优点| 亚洲国产精品系列| 成人黄色在线播放| 欧美重口另类videos人妖| 久久免费视频在线观看| 超薄丝袜一区二区| 尤物99国产成人精品视频| 亚洲性xxxx| 国产精品久久久久77777| 欧美乱大交xxxxx| 中文字幕成人精品久久不卡| 久久999免费视频| 91九色蝌蚪国产| 久久精品国产成人精品| 成人久久精品视频| 亚洲天堂网在线观看| 久久精品久久久久久| 美女视频黄免费的亚洲男人天堂| 97在线精品视频| 亚洲天堂男人的天堂| 91在线网站视频| 中文亚洲视频在线| 亚洲美女视频网站| 亚洲va欧美va国产综合剧情| 国产精品v日韩精品| 久久99精品国产99久久6尤物| 日韩av快播网址| 久久久久中文字幕| 欧美电影免费播放| 亚洲天堂第二页| 久久久国产精品免费| 欧美视频在线观看 亚洲欧| 久久国产精品影视| 91超碰中文字幕久久精品| 欧美精品videosex牲欧美| 精品精品国产国产自在线| 日韩欧美成人网| 久久亚洲精品视频| 精品中文字幕视频| 91美女福利视频高清| 欧美性猛交xxxxx水多| 欧美成人中文字幕| 欧美激情aaaa| 尤物yw午夜国产精品视频明星| 日韩电影中文字幕|