最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Shell腳本實(shí)現(xiàn)自動(dòng)輸入密碼登錄服務(wù)器

 更新時(shí)間:2015年03月17日 09:35:17   投稿:junjie  
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)自動(dòng)輸入密碼登錄服務(wù)器,本文使用expect來(lái)實(shí)現(xiàn)這個(gè)需求,講解了expect的安裝及使用腳本,需要的朋友可以參考下

使用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)單,如下

復(fù)制代碼 代碼如下:

sudo yum install expect 

至于Mac用戶(hù),可以通過(guò)homebrew安裝(需要先安裝homebrew,請(qǐng)自行Google)
復(fù)制代碼 代碼如下:

brew install expect 

測(cè)試腳本
我們寫(xiě)一個(gè)簡(jiǎn)單的腳本實(shí)現(xiàn)scp拷貝文件,在腳本里配置密碼,保存為scp.exp如下

復(fù)制代碼 代碼如下:

#!/usr/bin/expect 
set timeout 20 
 
if { [llength $argv] < 2} { 
    puts "Usage:" 
    puts "$argv0 local_file remote_path" 
    exit 1 

 
set local_file [lindex $argv 0] 
set remote_path [lindex $argv 1] 
set passwd your_passwd 
 
set passwderror 0 
 
spawn scp $local_file $remote_path 
 
expect { 
    "*assword:*" { 
        if { $passwderror == 1 } { 
        puts "passwd is error" 
        exit 2 
        } 
        set timeout 1000 
        set passwderror 1 
        send "$passwd\r" 
        exp_continue 
    } 
    "*es/no)?*" { 
        send "yes\r" 
        exp_continue 
    } 
    timeout { 
        puts "connect is timeout" 
        exit 3 
    } 

注意,第一行很重要,通常我們的腳本里第一行是#!/bin/bash,而這里是你機(jī)器上expect程序的路徑,說(shuō)明這段腳本是由expect來(lái)解釋執(zhí)行的,而不是由bash解釋執(zhí)行,所以代碼的語(yǔ)法和shell腳本也是不一樣的,其中set passwd your_passwd設(shè)置成你自己的密碼,然后執(zhí)行如下命令

復(fù)制代碼 代碼如下:

./scp.exp ./local_file user@host:/xx/yy/ 

執(zhí)行前確保scp.exp有執(zhí)行權(quán)限,第一個(gè)參數(shù)為你本地文件,第二個(gè)為遠(yuǎn)程主機(jī)的目錄,運(yùn)行腳本如果報(bào)錯(cuò)“connect is timeout”,可以把超時(shí)設(shè)長(zhǎng)一點(diǎn),第二行set timeout 20可以設(shè)置超時(shí)時(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à)瓢就行了

相關(guān)文章

  • shell中1小于/dev/null 2大于&1的含義

    shell中1小于/dev/null 2大于&1的含義

    shell中可能經(jīng)常能看到:>/dev/null 2>&1,這里簡(jiǎn)單介紹下,方便需要的朋友
    2013-01-01
  • 關(guān)于ssh連不上問(wèn)題的解決方法(必看)

    關(guān)于ssh連不上問(wèn)題的解決方法(必看)

    下面小編就為大家?guī)?lái)一篇關(guān)于ssh連不上問(wèn)題的解決方法(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • linux awk高級(jí)應(yīng)用實(shí)例

    linux awk高級(jí)應(yīng)用實(shí)例

    今天看到unix shell 范例精解上有道awk的題目 做了以后拿來(lái)和大家分享下
    2016-08-08
  • shell流程控制語(yǔ)句腳本編程解析

    shell流程控制語(yǔ)句腳本編程解析

    這篇文章主要為大家介紹了shell流程控制語(yǔ)句腳本編程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • linux下ssh安裝與scp命令使用詳解

    linux下ssh安裝與scp命令使用詳解

    這篇文章主要介紹了linux下ssh安裝與scp命令使用詳解的相關(guān)資料,需要的朋友可以參考下
    2015-09-09
  • Linux tar 命令用法實(shí)例詳解

    Linux tar 命令用法實(shí)例詳解

    利用 tar 命令,可以把一大堆的文件和目錄全部打包成一個(gè)文件,這對(duì)于備份文件或?qū)讉€(gè)文件組合成為一個(gè)文件以便于網(wǎng)絡(luò)傳輸是非常有用的。這篇文章主要介紹了Linux tar 命令用法詳解,需要的朋友可以參考下
    2018-03-03
  • Linux查看GPU信息和使用情況的實(shí)現(xiàn)命令

    Linux查看GPU信息和使用情況的實(shí)現(xiàn)命令

    這篇文章主要介紹了Linux查看GPU信息和使用情況的實(shí)現(xiàn)命令,文中通過(guò)示例代碼和圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-12-12
  • 詳解linux下tree命令的用法

    詳解linux下tree命令的用法

    tree是一種遞歸目錄列表命令,產(chǎn)生一個(gè)深度縮進(jìn)列表文件,這是彩色的ALA dircolors如果ls_colors設(shè)置環(huán)境變量和輸出是TTY。下面通過(guò)本文給大家分享linux下tree命令的用法,感興趣的朋友一起看看吧
    2017-09-09
  • 利用shell腳本進(jìn)行批量處理文件后綴名

    利用shell腳本進(jìn)行批量處理文件后綴名

    這篇文章主要給大家介紹了關(guān)于如何使用shell腳本進(jìn)行批量處理文件后綴名,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-12-12
  • 如何編寫(xiě)健壯的Bash腳本(經(jīng)驗(yàn)分享)

    如何編寫(xiě)健壯的Bash腳本(經(jīng)驗(yàn)分享)

    本文介紹下,編寫(xiě)出健壯的bash shell腳本的方法,感興趣的朋友參考學(xué)習(xí)下
    2013-11-11

最新評(píng)論

安岳县| 陇南市| 突泉县| 额尔古纳市| 宿州市| 嘉峪关市| 常宁市| 平陆县| 宝坻区| 克山县| 武穴市| 汪清县| 彩票| 蒙阴县| 牟定县| 宣威市| 临漳县| 竹山县| 罗定市| 内丘县| 阿图什市| 汝州市| 清流县| 博湖县| 温宿县| 称多县| 盱眙县| 永吉县| 镶黄旗| 库车县| 定南县| 连州市| 扶余县| 南汇区| 漾濞| 阿克| 双流县| 收藏| 股票| 周口市| 武山县|