我正在开发一个bash脚本,目前正在为多个变量执行以下操作:
variable1=$(ssh -T user@hostname "command one")
variable2=$(ssh -T user@hostname "command two")
variable3=$(ssh -T user@hostname "command three")
variable4=$(ssh -T user@hostname "command four")
是否有一种简单的方法(不会将多个命令的输出粘贴到单个文件中,然后使用该文件)在单个ssh连接上从不同的远程命令分配多个变量?
答案 0 :(得分:2)
您可以通过在一个SSH命令中执行所有命令,然后将每个命令的输出返回到一个数组中来完成此操作。
最后,根据需要迭代数组并进行处理。
代码:
#!/bin/sh
IFS=$'\n'
VARS=`ssh user@host 'echo 1 2; echo 3'`
for A_VAR in $VARS; do
echo "Out: $A_VAR"
done
输出:
> ./sshtest.sh
Out: 1 2
Out: 3
答案 1 :(得分:0)
没有。 bash *中没有“返回”,当然也没有超过ssh。您所能做的就是通过stdout和stderr传递数据。
*所有进程和函数的出口值都在0到255之间,并且在一个函数中你可以使用return
以特定值退出,但它并没有真正返回任何其他语言。
答案 2 :(得分:0)
您可以通过“编程SSH库”(通过包装器)更好地控制您想要的内容。例如,在Perl中,您可以使用诸如Net:SSH::Perl之类的库。
my $ssh = Net::SSH::Perl->new("yourhost");
$ssh->login("user1", "pass1");
$ssh->cmd("foo");
$ssh->cmd("bar");
您通过单个$ ssh实例执行多个命令(与使用shell多次调用ssh命令行工具相反)。 这只是一个例子。