ssh
他のサーバーに接続し、そこからいくつかのコマンドを実行するbashスクリプトがあります。一部のウェブサイトのerror()Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.
はフレンドリーなメッセージですが、私のbashスクリプトは「停止しました」。このメッセージが表示された後、他のコマンドは実行されません。他のフォーラムではssh -t
メッセージの抑制に効果があると推定されていますが、私には効果がありませんでした。私のコードは次のとおりです
.
.
.
stty -echo
sshpass "pwd" ssh -o StrictHostKeyChecking=no [email protected] 'su -lc "rm -rf tmp"' 2>/dev/null
stty echo
.
.
.
私が使用する理由stty-echo
は、ユーザーをrootに切り替えてパスワードを端末に表示させる必要があるためです(私はそれを望んでいません)。Warning: no access to tty (Bad file descriptor). Thus no job control in this shell.
接続サーバー(ip:1.1.1.1)にrootパスワードを入力しましたが、エラーメッセージ()が表示されました。
どんな提案がありますか?追加の説明が必要な場合はお知らせください。ありがとうございます! (私のbashバージョンはGNU bashバージョン3.2.51(1)です。)
編集する
削除時に表示されるエラーメッセージ2>/dev/null
は次のとおりです。
Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.
stty: standard input: Invalid argument
ベストアンサー1
使用前にstdin
端末であることを確認できますstty
。
if [[ -t 0 ]]; then stty -echo; fi