web-dev-qa-db-ja.com

SSHを介してリモートで実行されたコマンドからの出力のキャプチャがCRONで失敗する

この質問はこれと直接関係があります: 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がバグのあるリモートコンソールを克服するのに役立つこれに対する解決策はありますか?

2
vobelic

コマンドは結果をstderrまたはstdoutで出力しますか?

を使用してstderrstdoutに再ルーティングできます

OUT=$(ssh -tt -vv [email protected] "remote command" 2>&1 )
2
goakgun

Cronjobに完全修飾パスを使用することを検討しましたか?

使用する /usr/bin/ssh user@Host の代わりに ssh user@Host

0
user218671