2017-10-16 9 views
0

私はシェルスクリプトを書いて、ıはcrontabに設定しますが、ıには問題があります。 crontabがスクリプトを実行するときに、スクリプト内でscpコマンドを実行し、別のサーバからいくつかの情報を取得すると、ıスクリプト内に他のサーバのパスワードを入力する必要があります。スクリプト内でパスワードを入力するには?スクリプト内でパスとユーザ名を入力するには

私のスクリプト:

scp [email protected]:/Products/data/bridge/control.txt . 

????? (have to automatically enter password) 

b=$(more control.txt | wc -l) 

if [$b = 1]; then 

echo " OK " 

fi 
+1

をあなたはこの – mathB

+0

'sshpass -p "パスワード" SCPのユーザ名@ホストを完了するために、' sshpass'を使用することができます。 /Products/data/bridge/control.txt .'を正確にしてください。 – PoVa

+0

sshpassを試してみてください。そして、あなたのシステムが〜/ .ssh/known_hostsをあなたのシステムの中に持つ前に、あなたのシステムはリモートサーバに接続しなければなりません。ただし、パスワードを保護されていない状態でcrontabまたはファイルシステムに残す必要があるため、この方法は推奨されていません。 ssh-keygenを使ってキーを作成し、〜/ .ssh/id_rsa.pubをリモート〜/ .ssh/authorized_keysに置くことをお勧めします。その後、システムはscp中にパスワードを提供する必要はありません。 – HZS

答えて

0

あなたは、たとえば、expectを使用することができます。

my_password="123456" 
expect -c "spawn scp [email protected]:/Products/data/bridge/control.txt .; expect \"password\" {send -- \"${my_password}\r\"; expect eof;};" 
関連する問題