2016-12-21 104 views
0

如何執行通常需要用戶交互的系統命令?例如,我想運行:執行需要用戶輸入的終端命令

system("ssh-keygen") 

在終端提示,它看起來像這樣:

iMac-2:~ admin$ ssh-keygen 
Generating public/private rsa key pair. 
Enter file in which to save the key (/Users/admin/.ssh/id_rsa): 

在RStudio,該命令引起應用程序掛起。

我試過選項wait=FALSEinvisible=FALSE,但他們似乎沒有幫助。

R: Using wait=FALSE in system() with multiline commands

`system()` interactive .exe/binary from R/Rgui

+0

'system'函數有一個'輸入='參數。您可以嘗試將用戶輸入編碼到此參數中。 – mt1022

回答

2

嘛。

有一些命令誰,讓你把在命令行參數:

例如:

ssh-keygen

如果你運行:ssh-keygen --help你會發現這樣的事情:

ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]

它說你可以指定通信參數和線。

在我來說,我已經與測試:

ssh-keygen -f /tmp/id_rsa -P ""

而且我也不需要與節目互動。

喜歡就好adduser命令另一個例子,你可以嘗試用:

echo PASSWORD | passwd USERNAME --stdin

+0

謝謝,這有助於很多。你知道有沒有辦法用'scp'和'ssh'提供密碼? – Bobby

+1

有一個命令'sshpass',但是....我不認爲這可能是一個很好的方式來使用密碼,因爲你可以在腳本中使用它,有人可以讀取密碼。我認爲你可以在你的主機之間配置一個'信任關係',它也可以幫助你。 –