SSH経由でバッチモードでコマンドを実行するには?

SSH経由でバッチモードでコマンドを実行するには?

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

どのように簡単に保ち、別のコンピュータで「バッチ」ファイルを実行できますか?

  1. scpバッチファイルuser@pc
  2. SSH user@pcバッチファイル
  3. ssh user@pc rm バッチファイル

バッチファイルは通常のシェルスクリプトなので、構文はよく知られています。

答え4

おそらく

ssh user@host sh -c "$(<filename)"

関連情報