2014-02-14 21 views
2

我正在編寫一個shell腳本,使用shell腳本本身中提到的密碼登錄到任何用戶帳戶。我的shell腳本如下:如何在腳本中使用密碼從shell腳本登錄到用戶帳戶?

mypass="helloworld" 
echo mypass>su myaccount 

執行這個shell腳本,我仍然在我的當前用戶帳戶,而不是myaccount

TL之後,DR我想知道如何通過登錄到用戶帳戶一個通過運行它的shell腳本。

+0

您需要使用expect來發送密碼 – Raghuram

+0

或者您需要'ssh' – BMW

+0

如果您使用'./ scrip.sh'執行腳本,那麼它將在新的子shell中執行。即使是這個'su',一旦這個shell完成了,你就會被留在原來的賬戶shell中。 – RedX

回答

3

使用expect腳本可以通過腳本發送密碼,下面是登錄到su帳戶和執行pwd命令的非常基本的期望腳本。

#!/usr/bin/expect 

spawn su myaccount   # Spawning the su process 
expect "Password:*"   # Wait/expect for the Password string from the spawned process 
send "uraccpassword\r"  # send the password to spawned process as an input. 
expect "*bash*" 
send "pwd\r" 
expect "*bash*" 
0

如果你想登錄到帳戶不需要提供密碼,那麼你就需要使用ssh-keygen帳戶生成SSH密鑰及公鑰複製到你想登錄到帳戶。此外,我會始終在生成的密鑰上設置密碼並使用ssh-agent進行管理。

相關問題