2016-12-21 15 views
0

通常、ユーザーの操作が必要なシステムコマンドを実行するにはどうすればよいですか?例えば、私が実行したいと思います:ユーザー入力が必要な端末コマンドを実行する

system("ssh-keygen") 

ターミナルプロンプトで、それは次のようになります。RStudioで

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

、このコマンドは、アプリケーションがハングします。

私はオプション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]

これは、パラメータをcommとライン。

私の場合は私がテストしてみた:

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

そして、私はプログラムと対話する必要はありません。

adduserコマンドのような別の例のように、あなたが試みることができる:

echo PASSWORD | passwd USERNAME --stdin

+0

ありがとう、それは多くの助けになります。 'scp'と' ssh'でパスワードを提供する方法があるかどうか知っていますか? – Bobby

+1

'sshpass'という名前のコマンドがありますが、パスワードを使うのが良い方法だと思っています。なぜなら、スクリプトで使うことができ、誰かがパスワードを読むことができるからです。私はあなたのホストの間に '信頼関係'を構成することができると思う、それもあなたを助けることができる。 –

関連する問題