使用Linux的程序員對(duì)輸入密碼這個(gè)舉動(dòng)一定不陌生,在Linux下對(duì)用戶(hù)有嚴(yán)格的權(quán)限限制,干很多事情越過(guò)了權(quán)限就得輸入密碼,比如使用超級(jí)用戶(hù)執(zhí)行命令,又比如ftp、ssh連接遠(yuǎn)程主機(jī)等等,如下圖:
那么問(wèn)題來(lái)了,在腳本自動(dòng)化執(zhí)行的時(shí)候需要輸入密碼怎么辦?比如你的腳本里有一條scp語(yǔ)句,總不能在腳本執(zhí)行到這一句時(shí)手動(dòng)輸入密碼吧。
針對(duì)于ssh或scp命令,可能有人會(huì)回答是建立信任關(guān)系,關(guān)于建立ssh信任關(guān)系的方法請(qǐng)自行百度Google,只需要兩行簡(jiǎn)單的命令即可搞定,但這并不是常規(guī)的解決方案,如果是ftp連接就沒(méi)轍了,況且,你不可能為了執(zhí)行某些命令去給每個(gè)你要連接的主機(jī)都手動(dòng)建立ssh信任,這已經(jīng)偏離了今天主題的本意,今天要說(shuō)的是在腳本里自動(dòng)輸入密碼,我們可以想象下,更優(yōu)雅的方式應(yīng)該是在腳本里自己配置密碼,當(dāng)屏幕交互需要輸入時(shí)自動(dòng)輸入進(jìn)去,要達(dá)到這樣的效果就需要用到expect。
安裝
CentOS下安裝命令很簡(jiǎn)單,如下
測(cè)試腳本
我們寫(xiě)一個(gè)簡(jiǎn)單的腳本實(shí)現(xiàn)scp拷貝文件,在腳本里配置密碼,保存為scp.exp如下
注意,第一行很重要,通常我們的腳本里第一行是#!/bin/bash,而這里是你機(jī)器上expect程序的路徑,說(shuō)明這段腳本是由expect來(lái)解釋執(zhí)行的,而不是由bash解釋執(zhí)行,所以代碼的語(yǔ)法和shell腳本也是不一樣的,其中set passwd your_passwd設(shè)置成你自己的密碼,然后執(zhí)行如下命令
還能做什么
細(xì)心的同學(xué)一定發(fā)現(xiàn)了,其實(shí)expect提供的是和終端的一種交互機(jī)制,輸入密碼只是其中一種應(yīng)用形式,只要是在終端阻塞需要輸入時(shí),都可以通過(guò)expect腳本完成自動(dòng)輸入,比如前面腳本里配置了兩種交互場(chǎng)景,一種是終端提示"password:"時(shí)輸入密碼,還有一種是提示"yes/no)?"時(shí)輸入“yes”,如果和遠(yuǎn)程主機(jī)是第一次建立連接,執(zhí)行scp.exp腳本效果是這樣的
所以我們可以根據(jù)終端的提示來(lái)配置輸入命令,這樣就能達(dá)到了自動(dòng)化的效果。至于處理其它交互場(chǎng)景,只需要照著上面的腳本依葫蘆畫(huà)瓢就行了
標(biāo)簽:安康 大慶 江西 仙桃 遵義 三門(mén)峽 上饒 大興安嶺
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Shell腳本實(shí)現(xiàn)自動(dòng)輸入密碼登錄服務(wù)器》,本文關(guān)鍵詞 Shell,腳本,實(shí)現(xiàn),自動(dòng),輸入,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。