sshpass Solaris One ライナーがコマンドを渡します。

sshpass Solaris One ライナーがコマンドを渡します。

liner sshpassコマンドをSolarisボックスに渡そうとしましたが、機能しません。私が試したオプションは次のとおりです。

sshpass -p "passw" ssh "[email protected]" -o StrictHostKeyChecking=no `at 11:04 Dec 10 <<< touch /tmp/test_file`
sshpass -p "passw" ssh "[email protected]" -o StrictHostKeyChecking=no 'at 11:04 Dec 10 <<< "touch /tmp/test_file"'
sshpass -p "passw" ssh "[email protected]" -o StrictHostKeyChecking=no "at 11:04 Dec 10 <<< "touch /tmp/test_file""
sshpass -p "passw" ssh "[email protected]" -o StrictHostKeyChecking=no "at 11:04 Dec 10 <<< \"touch /tmp/test_file\""

また、次のバリエーションを試しました。

"at 11:04 Dec 10 <<<\"touch /tmp/test_file\""
"at 11:04 Dec 10 <<<touch /tmp/test_file"
"at 11:04 Dec 10 <<< touch /tmp/test_file"
'at 11:04 Dec 10 <<<touch /tmp/test_file'
'at 11:04 Dec 10 <<<"touch /tmp/test_file"'
"/sbin/sh at 11:04 Dec 10<<<"touch /tmp/test_file""

次のメッセージが表示されます。135.102.22.0 sh:行1の構文エラー:「<」予期しない

また、これを試しました。"at 13:19 Dec 10 <<EOF touch /tmp/atran3 EOF" これによりエラーが発生しました。 at:誤った時間仕様

ベストアンサー1

リモートシェルはここでstring()を理解していないようです<<<string。 Here-strings は POSIX 標準の拡張であり、どのシェルでも理解できない場合があります。

代わりにローカルにリダイレクトしてリモートでat呼び出してください。

sshpass -p 'passw' \
ssh -o StrictHostKeyChecking=no \
    [email protected]  \
    'at 11:04 Dec 10' <<<'touch /tmp/test_file'

これは、ローカルの対話型シェルがこの文字列をサポートしていると仮定します。

この文字列を完全に使用しない可能性があります。

echo 'touch /tmp/test_file' |
sshpass -p 'passw' \
ssh -o StrictHostKeyChecking=no \
    [email protected]  \
    'at 11:04 Dec 10'

または、より長いスクリプトをスケジュールするには、次のマニュアルを使用してください。

sshpass -p 'passw' \
ssh -o StrictHostKeyChecking=no \
    [email protected]  \
    'at 11:04 Dec 10' <<'END_AT_SCRIPT'
touch /tmp/test_file
# Possibly more
# commands here
END_AT_SCRIPT

または、スクリプトをファイルに保存して送信してください。

sshpass -p 'passw' \
ssh -o StrictHostKeyChecking=no \
    [email protected]  \
    'at 11:04 Dec 10' <myscript.sh

おすすめ記事