SSH経由でバッチモードでコマンドを実行するには?つまり、ssh
このコマンドの意味は何ですかsftp -b <filename> <hostname>
?
setに渡すコマンドセットがありますssh
。最後に、sftp
コマンドをファイルに保存しfilename
てホストに接続し、前述のコマンドを使用してコマンドを実行します。
このまま終わることは可能でしょうかssh
?
答え1
私が間違っている場合は訂正してください。ただし、スクリプトがローカルであるリモートサーバーで通常のシェルコマンドを実行したいようです。
#!/bin/sh
trap "rm -f /tmp/sendonssh.$$.*" 0 1 2 3 15
# commands to run on the remote server
cat <<'EOF' >> /tmp/sendonssh.$$.sh
mkdir -p /tmp/foobar.$$
mv $HOME/xyzzy /tmp/foobar.$$
chmod 640 $HOME/xyzzy
EOF
# call for each argument
for userhost in "$@"; do
errorout=`ssh -aTxo BatchMode=yes $userhost /bin/sh -s < /tmp/sendonssh.$$.sh 2>&1`
rc=$?
if [ $rc -ne 0 ]; then
echo "Error: $userhost: $errorout"
exit $rc
fi
done
私はシェルの代わりにPythonを使用しています。テスト環境では、「リモート実行」アプリケーションを使用してこれを実行しましたssh $userhost python < $pythonscriptfilename
。
答え2
SSHは次のとおりですsftp -b <filename> <hostname>
。
ssh -o BatchMode=yes <hostname> sh -s < "<filename>"
答え3
どのように簡単に保ち、別のコンピュータで「バッチ」ファイルを実行できますか?
- scpバッチファイルuser@pc
- SSH user@pcバッチファイル
- ssh user@pc rm バッチファイル
バッチファイルは通常のシェルスクリプトなので、構文はよく知られています。
答え4
おそらく
ssh user@host sh -c "$(<filename)"