2014-06-20 32 views
0

我是Linux Shell Scripting的新手。我需要執行一個shell腳本來獲取用戶名,密碼,主機名,要執行的命令作爲1,2,3,4參數分別。 我使用ssh,但它提示輸入密碼。該腳本的主題是從遠程服務器執行命令。密碼安全問題不是問題。 主要問題是我不能提示輸入密碼。請幫我解決這個問題。在命令中提供密碼並執行

echo username = $1 
echo Password = $2 
echo Host-Name = $3 
echo Command to Be executed = $4 
set -x 
expect -c "spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no [email protected]$3 $4; expect \"*assword:*\"; send "$2\r";expect eof;" 

echo "===============" 

我的輸出:

username = root 
Password = [email protected] 
Host-Name = host-name 
Command to Be executed = ls 
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no [email protected] ls 
[email protected]=============== 

是沒有得到顯示我的命令即LS輸出。

後使用set -x之前預計的命令:

輸出:

username = root 
Password = [email protected] 
Host-Name = host-name 
Command to Be executed = ls 
+ expect -c 'spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no [email protected] ls; expect "*assword:*"; send [email protected];expect eof;' 
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no [email protected] ls 
[email protected]+ echo 
=============== 
=============== 
++ printf '\033]0;%[email protected]%s:%s\007' root RHEL5 '~' 
+1

您可以使用密碼以下(基於密鑰的)身份驗證。或者你可以試着'expect'來提供密碼。 –

+0

如何處理expect命令?我已更新我的問題,請提出建議 – user3318138

+0

任何建議。 – user3318138

回答

0

這是爲我工作:

expect -c "spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no [email protected]$3 $4; expect \"*assword:*\"; send \"$2\r\";expect eof;" 
0

您可以使用以下shell命令:

expect -c 'spawn ssh [email protected]; expect password:; send "PASSWORD\n"; interact' 

您可能沒有expect在你的Linux系統,但我認爲你可以很容易地安裝它。

0

試試這個:

echo username = $1 
echo Password = $2 
echo IP-Address= $3 
echo Command to be executed= $4 
expect -c "spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no [email protected]$3 $4; expect \"*assword:*\"; send $2\r; expect eof" 

而對於基於密鑰的登錄信息,請this鏈接。爲此,您需要使用空密碼生成公鑰和私鑰。並將您的公鑰添加到遠程計算機USER/.ssh/authorized_keys。

+0

我沒有得到所需的輸出。它顯示 username = root Password = root @ 123 Host-Name =主機名 spawn ssh -oStrictHostKeyChecking = no -oCheckHostIP =無root @主機名ls root @ 123 ============= == – user3318138

+0

我需要輸出ls命令 – user3318138

+0

相同的腳本正在爲我工​​作我得到'ls'輸出。您能否請完整的錯誤日誌? –

相關問題