この質問はこれと直接関係があります: sshはcron bashスクリプトから実行するとリモートコマンドの実行に失敗します-CLIから動作します
担当者が足りないため、受け入れられた回答にコメントすることができませんので、ご容赦ください。
Linux PCマシンでスクリプトを実行していて、出力を取得しようとしているホストはOSを備えたルーターであるため、コンソールの構成に関して影響を与えることはできません。基本的にこれをcronで実行すると:OUT=$(ssh -tt -vv [email protected] "remote command")
は空の変数を取得します。
debug1: Sending command: remote command
debug2: channel 0: request exec confirm 1
debug2: callback done
debug2: channel 0: open confirm rwindow 2621440 rmax 262144
debug2: channel 0: read<=0 rfd 4 len 0
debug2: channel 0: read failed
これをcronの外部で実行している場合、つまりCLIで実行している場合、期待どおりに出力が得られます。ご覧のとおり、疑似tty割り当てを強制する-ttオプションは役に立ちません。
Cronがバグのあるリモートコンソールを克服するのに役立つこれに対する解決策はありますか?
コマンドは結果をstderrまたはstdoutで出力しますか?
を使用してstderr
をstdout
に再ルーティングできます
OUT=$(ssh -tt -vv [email protected] "remote command" 2>&1 )
Cronjobに完全修飾パスを使用することを検討しましたか?
使用する /usr/bin/ssh user@Host
の代わりに ssh user@Host