SCPパスワード自動入力

SCPパスワード自動入力

cronjobにscpが表示されるようにするので、他のサーバーには自動入力パスワードを使用することをお勧めします。

sshpass -p 'your_password' scp [email protected]:/usr/etc/Output/*.txt /usr/abc/

このスクリプトは私には機能しません。私はSolarisを使用しています。

回答の説明も表示してください。ありがとうございます。

追加

使った

#!/usr/local/bin/expect -f

spawn bash -c "scp /apps/DASHBOARD/xx/xxx/xxxx/TEST1.*.txt dash@MYSERV:/apps/DASHBOARD/xx/xxx1/"
expect "*Password:*"
send "pass123\r"
interact

spawn bash -c "scp /apps/DASHBOARD/xx/xxx/xxxx/SAMP1.*.txt* dash@MYSERV:/apps/DASHBOARD/xx/samp1/"
expect "*Password:*"
send "pass123\r"
interact

CRONJOBに入れました。このスクリプトを手動で実行すると機能しますが、CRONJOBにこのスクリプトを設定すると、2番目のscpでは続行されません。

助けてください。

答え1

ハードコピーパスワードをアーカイブ/メンテナンスしたくない場合は、公開鍵認証を使用して接続してください。公開鍵認証接続を確立するために、ローカルユーザーコンテンツをリモートid_rsa.pubユーザーファイルにコピーします。~/.ssh/authorized_keys

それでもパスワードを使用したい場合は、次のように予測スクリプトを作成し、合計userserverパスワードが一致するように予想スクリプトの2行目を変更できますMY_PASSWORD

spawn scp "[email protected]:/usr/etc/Output/*.txt" /usr/abc/
expect "[email protected]\'s password:" 
send "MY_PASSWORD\r"
interact

投稿してくれた@pynexjに感謝します。StackOverFlowへのリンク次のようにスクリプトを変更する必要がありました。

#!/usr/bin/expect -f

spawn scp /TEST1.txt [email protected]:/root/
expect "*assword:*"
send "password\r"
expect eof

spawn scp /TEST2.txt [email protected]:/root/
expect "*assword:*"
send "password\r"
expect eof
exit

ノート転送するファイルやパターンが複数ある場合は、SFTPのバッチモードの使用を検討することもできます。

答え2

ハードドライブの機密性を許可する場合は、ホームの.sshフォルダにあるキーを使用してパスワードの確認をスキップできます。これは非対話型、機械間認証です。

答え3

これを試みる前に、scpで正規表現の引用符を使用する必要があるため、これが失敗ポイントになる可能性が高くなります。

sshpass -p 'your_password' scp "[email protected]:/usr/etc/Output/*.txt" /usr/abc/

関連情報