如何通过 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
如何保持简单并在另一台计算机上运行“批处理”文件?
- scp 批处理文件 user@pc
- ssh user@pc 批处理文件
- ssh user@pc rm 批处理文件
批处理文件将是一个普通的 shell 脚本,因此语法是众所周知的。
答案4
也许
ssh user@host sh -c "$(<filename)"