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
それでもパスワードを使用したい場合は、次のように予測スクリプトを作成し、合計user
とserver
パスワードが一致するように予想スクリプトの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/