新聞中心
隨著現(xiàn)代技術(shù)的發(fā)展,計(jì)算機(jī)日益普及,人們?nèi)粘J褂糜?jì)算機(jī)的時(shí)間也越來(lái)越長(zhǎng),計(jì)算機(jī)的操作與管理也越來(lái)越復(fù)雜。因此,輕松自動(dòng)化已經(jīng)成為計(jì)算機(jī)管理、操作的重要手段之一。在這個(gè)過(guò)程中,學(xué)習(xí)使用 linux 腳本 expect,不僅可以提高計(jì)算機(jī)操作效率,還可以減少犯錯(cuò)的可能性,為我們的工作和生活帶來(lái)便利。

桑日ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
那么,什么是 Linux 腳本 expect 呢?它可以實(shí)現(xiàn)什么樣的功能呢?
Linux 腳本 expect 是一種自動(dòng)化腳本語(yǔ)言,它能夠自動(dòng)完成一些重復(fù)性、繁瑣的操作,同時(shí)也可以實(shí)現(xiàn)大批量、自動(dòng)化運(yùn)維管理,大幅度提高工作效率。expect 在 Linux 系統(tǒng)中被廣泛應(yīng)用,比如:在 SSH、Telnet、FTP、scp 等程序中,使用 expect 就可以寫出簡(jiǎn)潔,高效的自動(dòng)化操作腳本,使人工管理變得簡(jiǎn)單、高效。
那么如何學(xué)習(xí) expect 呢?
我們需要了解 expect 的基本用法。
expect 主要由 expect 和 send 兩個(gè)命令組成。expect 負(fù)責(zé)捕捉需要處理的信息,send 負(fù)責(zé)處理要發(fā)送的信息。
expect 命令語(yǔ)法格式如下:
`expect [-bvd] [-c cmds] [-f file] [-i id] [-l var] [-n] [-p pat] [-q] [-t sec] [timeout] [cmds]`
其中,-b 選項(xiàng)表示將 expect 進(jìn)程轉(zhuǎn)換為一個(gè)背景作業(yè),-c 選項(xiàng)表示在命令行中直接執(zhí)行 cmds 命令,-f 選項(xiàng)表示從 file 文件中讀取 cmds 命令。-i 選項(xiàng)表示使用指定的系統(tǒng)調(diào)用,-l 選項(xiàng)指定變量名,以便在 expect 中使用全局變量。-p 選項(xiàng)表示在等待指定的模式時(shí)不回顯,-q 選項(xiàng)表示退出 expect 并返回一個(gè)退出值,最后三個(gè)選項(xiàng)與目標(biāo)主機(jī)的交互有關(guān)。
send 命令語(yǔ)法格式如下:
`send [-s string] [-h] [-p] [-i id] [-l] [-n] [–] string …`
其中,-s 選項(xiàng)表示停止字符串。-h 選項(xiàng)表示僅發(fā)送字符串。-p 選項(xiàng)表示不寫回自己,-i 選項(xiàng)表示輸出的 ID。-l 選項(xiàng)表示發(fā)送時(shí)使用的延遲。-n 選項(xiàng)表示在數(shù)據(jù)流結(jié)束前不要發(fā)送換行符。string 參數(shù)表示要發(fā)送的字符串。
接下來(lái),我們來(lái)看看一個(gè)簡(jiǎn)單的 expect 腳本的編寫。
expect
expect “password:”
send “123456\n”
expect
以上腳本的意思就是,當(dāng)程序運(yùn)行到 password: 時(shí),自動(dòng)輸入密碼 123456 并執(zhí)行回環(huán)函數(shù),退出 expect。
除了以上這個(gè)簡(jiǎn)單的例子外,還有很多實(shí)用的 expect 腳本編寫方法。
比如,我們可以使用 expect 進(jìn)行多服務(wù)器密鑰批量分發(fā)。
#!/bin/bash
username=”root”
password=”123456″
ip_list=(“192.168.10.21” “192.168.10.22” “192.168.10.23”)
for ip in ${ip_list[@]}
do
expect
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $username@$ip
expect {
“(yes/no)” {send “yes\r”;exp_continue}
“password:” {send “$password\r”}
}
expect eof
EOF
done
以上腳本的功能是批量將公鑰推送到多臺(tái)服務(wù)器上,以便進(jìn)行密碼-less 登陸。
此外,expect 還可以用于自動(dòng)化 FTP 文件上傳、Telent 自動(dòng)登錄等等。上面的例子僅僅是為了說(shuō)明 expect 的基本用法,實(shí)際使用中還需要根據(jù)具體需求進(jìn)行變化。
學(xué)習(xí)使用 Linux 腳本 expect 可以讓我們的工作更加高效、便捷,為我們的生活和工作帶來(lái)便利。在使用 expect 過(guò)程中,我們需要注重實(shí)踐,多多發(fā)揮自己對(duì)腳本的理解和想象力,可以在學(xué)習(xí)過(guò)程中挖掘出更多 expect 的奧秘。
相關(guān)問(wèn)題拓展閱讀:
- linux 使用expect腳本ssh到遠(yuǎn)程無(wú)法使用RZ為什么
- linux下用expect spawn時(shí)的問(wèn)題
linux 使用expect腳本ssh到遠(yuǎn)程無(wú)法使用RZ為什么
因?yàn)榫W(wǎng)絡(luò)中斷相當(dāng)于跑程序的控制臺(tái)關(guān)閉。這時(shí)控制臺(tái)里的程序會(huì)被關(guān)閉。
你可以用nohup 程序名銷晌轎 &,這樣即使控制臺(tái)關(guān)閉謹(jǐn)茄程序虧肆照樣在后臺(tái)運(yùn)行。
linux下用expect spawn時(shí)的問(wèn)題
*.log 是shell中的用法,
scp或者其他命令本身并不直接將 * 替換成匹配的多個(gè)滾手文件名。
建議你將 expect 腳本做成一次只上傳一個(gè)文件,這個(gè)文件名由輸入?yún)?shù)來(lái)決定
scp :/home
expect “password:” {send “\n”}
interact
然后再寫一個(gè)bash腳本,腳本調(diào)用上面的expect腳本來(lái)上傳所有的文件,如:
for f in `ls /log/*.log`
do
expect_script /log/$f
done
即可。
另,像這陪仿種備份文件,用大亂嫌 rsync 更方便,供參考。
可以使用如下方法
1. 在客戶機(jī)上產(chǎn)生一對(duì)密鑰:
#ssh-keygen -d #產(chǎn)生dsa密鑰孝談
或者:
#ssh-keygen -t rsa #產(chǎn)生rsa密鑰
2. 在服務(wù)器上建立目錄 /root/.ssh,并設(shè)則毀置權(quán)限:
#chmod/root/.ssh
3. 把客戶機(jī)上生成的公鑰拷貝到服務(wù)器的/root/.ssh目錄下:
#scp /root/.ssh/id_dsa.pub root@服務(wù)器IP:/root/.ssh/authorized_keys
或?qū)O慎備者:
#scp /root/.ssh/id_rsa.pub root@服務(wù)器IP:/root/.ssh/authorized_keys
4. 這樣,就可以從客戶機(jī)直接登入ssh服務(wù)器,而不需要密碼了,可使用的命令包括ssh, scp和sftp。例如:
關(guān)于linux 腳本 expect的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都服務(wù)器托管選創(chuàng)新互聯(lián),先上架開(kāi)通再付費(fèi)。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)-網(wǎng)站建設(shè),軟件開(kāi)發(fā)老牌服務(wù)商!微信小程序開(kāi)發(fā),APP開(kāi)發(fā),網(wǎng)站制作,網(wǎng)站營(yíng)銷推廣服務(wù)眾多企業(yè)。電話:028-86922220
名稱欄目:輕松自動(dòng)化:學(xué)習(xí)使用 Linux 腳本 expect (linux 腳本 expect)
文章出自:http://fisionsoft.com.cn/article/cdsjpsh.html


咨詢
建站咨詢
