平時在控制台輸入指令如:sudo、ssh、ftp或者修改admin許可權的檔案時候都會要求輸入password,但是在she'll指令碼執行過程中該如何互動實現自動輸入密碼呢?
下面總結三種實現方法。
shell用重定向作為標準輸入的用法是:cmd《實現ftp自動登入並執行ls指令的用法如下:其中peter為使用者名稱,123456為密碼
ftp -i -n 192.168.4.46 《所以實現sudo自動輸入密碼的指令碼如下:其中123456為密碼
echo '123456' | sudo -s cp file /etc/hosts
實現自動修改密碼的指令碼寫法如下:
echo 'password' | passwd -stdin username
echo "root:123456" | chpasswd
expect就是用來做互動用的,基本任何互動登入的場合都能使用,但是需要安裝expect包
語法如下:
#!/bin/expect
set timeout 30
spawn ssh -l super 10.125.25.189
expect "password:"
send "123456\r"
interact
注意:expect跟bash類似,使用時要先登入到expect,所以首行要指定使用expect
在執行指令碼時候要expect file,不能sh file了
上面語句第一句是設定超時時間為30s,spawn是expect的語句,執行命令前都要加這句
send就是將密碼zjk123傳送過去
interact代表執行完留在遠端控制台,不加這句執行完後返回本地控制台
在shell指令碼中輸入密碼
示例 sudo apt get update bin bash echo password sudo s apt get update第二種方法 使用文字塊輸入重定向 第二種方法 bin bash sudo s apt get update eof 你的密碼 eof說明 在shell指令碼中,通常將...
Shell指令碼實現自動輸入密碼登入伺服器
這裡我們主要講使用expect實現自動輸入功能 安裝 centos下安裝命令,如下 yum install expect 開始之前的乙個簡單例項 plain view plain copy usr bin expect spawn ssh root 1.1.1.1 expect password s...
linux指令碼實現自動輸入密碼
使用linux的程式設計師對輸入密碼這個舉動一定不陌生,在linux下對使用者有嚴格的許可權限制,幹很多事情越過了許可權就得輸入密碼,比如使用超級使用者執行命令,又比如ftp ssh連線遠端主機等等,如下圖 那麼問題來了,在指令碼自動化執行的時候需要輸入密碼怎麼辦?比如你的指令碼裡有一條scp語句,...