国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Shell腳本實現自動輸入密碼登錄服務器

2019-10-26 18:45:13
字體:
來源:轉載
供稿:網友

使用Linux的程序員對輸入密碼這個舉動一定不陌生,在Linux下對用戶有嚴格的權限限制,干很多事情越過了權限就得輸入密碼,比如使用超級用戶執行命令,又比如ftp、ssh連接遠程主機等等,如下圖:

那么問題來了,在腳本自動化執行的時候需要輸入密碼怎么辦?比如你的腳本里有一條scp語句,總不能在腳本執行到這一句時手動輸入密碼吧。

針對于ssh或scp命令,可能有人會回答是建立信任關系,關于建立ssh信任關系的方法請自行百度Google,只需要兩行簡單的命令即可搞定,但這并不是常規的解決方案,如果是ftp連接就沒轍了,況且,你不可能為了執行某些命令去給每個你要連接的主機都手動建立ssh信任,這已經偏離了今天主題的本意,今天要說的是在腳本里自動輸入密碼,我們可以想象下,更優雅的方式應該是在腳本里自己配置密碼,當屏幕交互需要輸入時自動輸入進去,要達到這樣的效果就需要用到expect。

安裝
CentOS下安裝命令很簡單,如下
代碼如下:
sudo yum install expect 

至于Mac用戶,可以通過homebrew安裝(需要先安裝homebrew,請自行Google)
代碼如下:
brew install expect 

測試腳本
我們寫一個簡單的腳本實現scp拷貝文件,在腳本里配置密碼,保存為scp.exp如下
代碼如下:
#!/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 { 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 都匀市| 大田县| 延寿县| 株洲县| 浠水县| 黄平县| 全南县| 页游| 辽阳县| 吉安市| 洮南市| 即墨市| 大邑县| 竹溪县| 全南县| 娱乐| 大埔县| 布尔津县| 方城县| 宣化县| 绵竹市| 曲松县| 塔河县| 政和县| 舞钢市| 铜梁县| 拉萨市| 淮南市| 河曲县| 青岛市| 大连市| 时尚| 拉萨市| 孟津县| 杂多县| 信丰县| 仙桃市| 万年县| 云南省| 酉阳| 罗山县|