如何通过 ssh 以批处理模式运行命令?

如何通过 ssh 以批处理模式运行命令?

如何通过 ssh 以批处理模式运行命令?也就是说,该ssh命令相当于什么sftp -b <filename> <hostname>

我有一组命令,我希望在一组通过ssh.最后sftp,我将命令存储在文件中filename并连接到主机并使用前面提到的命令运行命令。

这样的事情有可能结束吗ssh

答案1

如果我错了,请纠正我,但您似乎想在脚本位于本地的远程服务器上运行常规 shell 命令。

#!/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 而不是 shell: 来使用一些“远程执行”应用程序来执行此操作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 批处理文件

批处理文件将是一个普通的 shell 脚本,因此语法是众所周知的。

答案4

也许

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

相关内容