shell程式設計expect的幾個應用例項
由於工作需要server間實現自動互動,因此特意在網上找了幾篇關於expect文章進行學習。
之後嘗試實現了幾個常用互動功能的程式,寫成指令碼供大家參考。
expect不是函式也不是命令,是一種程式設計工具語言,主要功能是實現資訊自動互動(例:自動登入server).
usage: expect [-di] [-c cmds] [[-f] cmdfile] [args]
expect巢狀在shell指令碼中實現scp:
#!/bin/sh
echo "input your text name for copying:"
read textname //得到要scp的檔名
login="yourlogin" //設定你的login
password="yourpassword" //設定你的password
servername="yourservername" //設定你的server
path=`pwd` //設定scp檔案所在的path
objectpath="yourobjectpath" //設定scp檔案到哪個path
expect -c "
spawn scp "$path/$textname" " [email protected]$servername:@objectpath" //執行scp操作,這時系統會詢問密碼.
expect {
\"*assword:*\" {
set timeout 300//設定超時時間.
send \"$password\r\"//千萬別忘掉回車.
}
}
expect eof"
expect巢狀在shell指令碼中實現ftp:
#!/bin/ksh login="yourlogin" password="yourpassword" ftpserver="yourserverip" //格式:xxx.xxx.xxx.xxx path="yourpath" //你要在目標server中存放file的path echo "input your file that will download to njcgpa" read line expect << EOF set timeout 120 spawn ftp $ftpserver expect "*Name*" send "$login\r" expect "*assword*" send "$password\r" expect "*ftp*" send "cd $path\r" expect "*250*CWD*" send "put line\r" expect "*complete*" send "bye\r" expect eof EOF //EOF必須在行首,行首不能有空格
一個完整的實現自動ftp多個檔案的程式。
功能:將多個檔案ftp到指定server中的指定path中去。
用法:將程式存放在autoftp檔案中。
>./autoftp file1 file2 file3 file4 ...
#!/bin/ksh login="yourlogin" password="yourpassword" ftpserver="yourftpserverIP" path="yourftppath" succount=0 allcount=0 while [ $# -gt 0 ] do allcount=`expr $allcount + 1` if [ -f $1 ] then succount=`expr $succount + 1` expect << EOF set timeout 120 spawn ftp $ftpserver expect "*Name*" send "$login\r" expect "*assword*" send "$password\r" expect "*ftp*" send "cd $path\r" expect "*250*CWD*" send "put $1\r" expect "*complete*" send "bye\r" expect eof EOF echo "$1 file was ftp completed!" >> resultlog else echo "$1 file was not found!" >> resultlog countine fi shift done if [ -f resultlog ] then cat resultlog rm resultlog fi echo "ftp $allcount files, $succount files were finished to ftp!"
測試:
>touch 1 2 3 4 5 // 新建5個file檔案
>./autoftp 1 2 3 4 55 66 77 5 // 55 66 77為三個不存在的檔案
1 file was ftp completed!
2 file was ftp completed!
3 file was ftp completed!
4 file was ftp completed!
55 file was not found!
66 file was not found!
77 file was not found!
5 file was ftp completed!
ftp 8 files, 5 files were finished to ftp!
該程式目前只能判定檔案是否存在,若不存在則跳過不執行ftp。
相關推薦
shell程式設計expect的幾個應用例項
由於工作需要server間實現自動互動,因此特意在網上找了幾篇關於expect文章進行學習。 之後嘗試實現了幾個常用互動功能的程式,寫成指令碼供大家參考。 expect不是函式也不是命令,是一種程式設計工具語言,主要功能是實現資訊自動互動(例:自動登入server).
Async和Await如何簡化非同步程式設計,幾個例項讓你徹底明白!
部落格園 引言 C#5.0中async和await兩個關鍵字,這兩個關鍵字簡化了非同步程式設計,之所以簡化了,還是因為編譯器給我們做了更多的工作,下面就具體看看編譯器到底在背後幫我們做了哪些複雜的工作的。 同步程式碼存在的問題 對於同步的程式碼,大家
推薦幾個範例項目
htm 分布式鎖 風格 r+ 易懂 集群 cti 配置 消息 推薦幾個範例項目 這裏推薦幾個自己寫的範例項目,主要采用SSM(Spring+SpringMVC+Mybatis)框架,分布式架構采用的是(dubbo+zookeeper)。範例項目的好處是簡單易懂,在
: 擴充套件的幾個應用 釋出網路YUM源 vim編輯技巧 原始碼編譯安裝 systemctl控制 總結和答疑
Top NSD SERVICES DAY01 案例1:補充應用技巧 案例2:軟連線與硬連線 案例3:man手冊、zip備份 案例4:自定義yum軟體倉庫 案例5:釋出及測試yum倉庫 案例6:vim效率操作 案例7:編譯安裝軟體包 案例8:使用
擴充套件的幾個應用 釋出網路YUM源 vim編輯技巧 原始碼編譯安裝 systemctl控制 總結和答疑
Top NSD SERVICES DAY01 案例1:補充應用技巧 案例2:軟連線與硬連線 案例3:man手冊、zip備份 案例4:自定義yum軟體倉庫 案例5:釋出及測試yum倉庫 案例6:vim效率操作 案例7:編譯安裝軟體包 案例8:使用
NetLogo程式設計的幾個小技巧
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
shell程式設計基礎:多重迴圈例項
鍵盤輸入:10 1 2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 3 4 5 6 7 8 4 5 6 7 5 6 #!/bin/bash read n for((a=1;a<=n;a++)) do c=n-a+1 for((b=a
shell下的幾個命令
參考部落格: https://www.cnblogs.com/-zyj/p/5760484.html 1. 批量刪除篩選的資料夾 ls -l | grep ^d | xargs rm -rf 2. awk 的簡單使用,批量kill 程序 ps
Shell程式設計---監控多個(遠端主機)磁碟使用情況並郵件報警
要求:監控多個(遠端主機)磁碟使用情況並郵件報警 分析: 任何一個分割槽使用到80%就傳送一個郵件幾個人通知提醒他們磁碟的使用情況; 任何一個分割槽使用到90%以上就在郵件主題給出警告(warning); Linux伺服器上傳送郵件程式我們使用sendmail。
資料結構--遞迴的幾個應用(求和,階乘,漢諾塔)
定義 一個函式自己呼叫自己遞迴的條件 必須要有明確的終止條件 所處理的資
用shell指令碼增加幾個組,並在每個組裡建立一定的使用者
昨天我們用語言寫了一個關於使用者組和使用者的簡單應用,但是說實話,就九個使用者我已經重複的很煩惱了,於是我就想能不能通過shell指令碼來實現批量增加使用者。於是乎,我今天就想著用shell指令碼去完成昨晚的例子。我們先來回顧一下昨天的例子。 題目:建立幾個組,每個組有一定的成員,並且每個組有一個可以操作的
python中執行shell命令的幾個方法
1.os.system() a=os.system("df -hT | awk 'NR==3{print $(NF-1)}'") 該命令會在頁面上列印輸出結果,但變數不會保留結果,只會保留返回的狀態碼. 2.os.popen() os.popen()返回的是 file read 的物件,但沒有狀
Dialog GreenPAK CMIC的三個應用例項
Dialog GreenPAK CMIC的三個應用例項 Dialog的GreenPAK™設計軟體和開發套件,為創新設計工程師們賦能,可以幫助他們輕鬆地建立定製的IC,整合儘可能多的功能,同時將功耗、元件數量和電路板整體尺寸降到最低,實現領先的設計。GreenPAK的經濟有效且佔位空間節省的特點,有助於設計工
【筆記】嵩天-Python語言程式設計-完成兩個簡單例項
【根索引】 【Python索引】 目標 使用PyCharm,完成兩個小例項的編寫和執行。一個是溫度轉換,一個是蟒蛇圖形繪製。 過程 1、先設定project目錄,雖然命名不是很正式,主要不太習慣軟體的目錄結構,好在只是熟悉語言和工具,就先把程式碼都放一個目錄下吧。 2、可以開啟多個py檔案,執行時可
shell 程式設計統計兩個檔案行數百分比
今日心血來潮,突然感覺shell中重複的命令讓人昏昏欲睡,故有此產出: 直接上乾貨,我的zhi'x指令碼如下: #!/bin/bash . ./subscript.txt for info in ${array[@]} do fstr=`echo $info |
【shelll指令碼程式設計】幾個小案例
案例1:批量新增使用者 從檔案users.txt中匯入使用者名稱列表,逐一判斷該使用者是否存在,如果存在則丟擲提示,不存在則新增使用者。 #!/bin/ bash #users.sh read -p "Enter:" PASSWD for UNAME in `cat
VS程式設計,幾個好用的Visual Studio外掛推薦。
1、Indent Guides 在成對的括號之間連一條虛線,有了這些輔助線,程式碼結構一目瞭然。VS2017自帶這個功能。 2、AllMargins 2012 使VS2012版本側邊的滑動條變寬,在此區域內顯示對應位置程式碼的預覽,和其它的資訊,並且在成對的括號之間連一條不同顏色的實
併發程式設計的幾個基本概念
同步&非同步 同步(Synchronous) 同步方法一旦呼叫必須等待方法呼叫返回後才會繼續後續行動。 非同步(AsyncChronous) 非同步呼叫更像傳遞一個訊息,一旦開始方法呼叫就會返回,呼叫者可以進行後續的操作,在java中非同步方法非同步都會在寧外一個執行緒中執行
HTML 幾個Table例項。單元格合併、點選新增行
1.不規則的表,單元格合併 樣式: 原始碼:<---------------------------------------------------------------start----------------------------------------------
【Android】幾個應用重新進入相關的屬性
android:clearTaskOnLaunch=”true” 當重新launch這個task的時候(當通過桌面重新進入這個應用) 會清理帶這個屬性的activity 這個屬性必須在這個task的根Activity(不是棧底,是進入而是這個應用的第一個acitivt