我是ssh的新手,所以如果我的问题微不足道,请原谅我。我需要让远程计算机多次执行一组命令,所以我正在考虑使用 SSH 制作循环。问题是我不知道我是否将这些命令保存在文件中并在该文件上循环,或者我可以将它们保存在 SSH 中并调用它们..我真的很烦恼..另外,如果我做这样的循环
i= 10
while i!= 0
execute command.text file ???
i--
我如何告诉它执行文件?
只需先在远程计算机的 shell 上尝试运行所需的命令即可。
你会在互联网上找到很多关于shell/bash/csh/whatevershell循环的信息:
例如,假设 bash 在远程主机中运行(来自:http://www.bashoneliners.com/
)$ for ((i=1; i<=10; ++i)); do echo $i; done
一旦你学会了这一点,只需将该语句从你想要触发操作的机器上带到 ssh 命令中:
$ ssh user@remotehost 'for ((i=1; i<=10; ++i)); do echo $i; done'
您可以编写一个简单的脚本来执行所需的命令,并将其路径传输到 ssh。例如:
script.sh,它会迭代你的一堆命令 10 次:
for i in $(seq 10)
do
command1
command2
command3
done
并将其路径到远程服务器执行: $ ssh $SERVERNAME < script.sh
如果你有这个command.text
文件,你已经把所有的命令都写在了列中(你可以用vi或vim修改它们并把它们放在列中),你甚至不需要做循环,你可以简单地做:
cat command.text | awk '{print "ssh user@remotehost "$0" "}' | sh -x
例如,如果command.text
包含:
ls -lart
cd /tmp
uname -a
这将允许您通过执行ssh user@remotehost
来执行command.text
中编写的所有命令。