リモートコンピュータでコマンドを実行したいです。リモートユーザーはパスワード認証が必要です。次のサンプルスクリプトを使用すると、次のエラーが発生します。これはサンプルスクリプトapplmgr.shの内容です。
#!/bin/bash
ssh [email protected] -c "cd ; touch testing ; cp testing testing_is ;mv testing
working" <<!
applmgr ## Password of applmgr user##
!
実行すると、次のメッセージが表示されます。
[oracle@dbsrvr ~]$ sh applmgr.sh
standard in must be a tty
答え1
スクリプトにパスワードを入力することは非常に間違ったセキュリティ慣行です。しかし、もしあなたが〜しなければならないその理由は、この目的のためにこのようなツールを使用できるためですsshpass
。
ただし、これらのタスクにはキーペア認証の使用を検討することをお勧めします。
ホストシステムにあり、a.example.com
実行するジョブがある場合は、b.example.com
次のコマンドを使用して設定できます。
ssh-keygen
- 認証用の公開/秘密鍵ペアが生成されます。ssh-copy-id [email protected]
- リモートホストで使用する公開鍵を設定します。このコマンドを実行すると、パスワードの入力を求められますが、その後は認証にキーが使用されます。
その時点から、たとえばリモートホストで実行できます。ssh [email protected] 'command'
command
答え2
expect
アプリケーションと対話し、ユーザーの行動をシミュレートするために構築されたシステムであるコマンドを見てください。
(もちろん、パスワードを捨ててキーを使用することが本当の解決策です)