Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Bash脚本-连接到远程服务器并获取结果_Linux_Bash_Shell - Fatal编程技术网

Linux Bash脚本-连接到远程服务器并获取结果

Linux Bash脚本-连接到远程服务器并获取结果,linux,bash,shell,Linux,Bash,Shell,我试图编写一个脚本,连接到远程服务器,ping其他服务器(作为参数的IP)并输出结果 下面是我写的: #!/bin/bash # IP as argument IP=$1 # Remote connection ssh -p 22 pinger@tester.myserver.com # Pinging and saving only latency results to RESULT RESULT=`ping -i 2 -c 4 $IP | grep icmp_seq | awk '{prin

我试图编写一个脚本,连接到远程服务器,ping其他服务器(作为参数的IP)并输出结果

下面是我写的:

#!/bin/bash
# IP as argument
IP=$1
# Remote connection
ssh -p 22 pinger@tester.myserver.com
# Pinging and saving only latency results to RESULT
RESULT=`ping -i 2 -c 4 $IP | grep icmp_seq | awk '{print $7}' | cut -b 6-12`
# Outputs the result    
echo $RESULT
但我得到了一个错误:

Name or service not known name tester.myserver.com

当然,
tester.myserver.com
只是一个例子,但如果我用真实的远程服务器地址手动键入ssh命令,它就可以工作了。所以我真的不知道为什么这不能作为脚本使用。

将相应的行更改为:

RESULT=`ssh pinger@tester.myserver.com "ping -i 2 -c 4 ${IP}" | grep icmp_seq | awk '{print $7}' | cut -b 6-12`
或无awk:

RESULT=`ssh pinger@tester.myserver.com "ping -i 2 -c 4 ${IP} | grep icmp_seq | sed 's/^.*time=\([0-9.]\+\).*/\1/'"`

因此,发送要在远程服务器上执行的命令或命令列表的常用方法如下:

ssh user@remote.server "<your commands go here>"
注意$7前面的“\”以转义“$”。这可以防止在运行ssh命令时将$7计算为局部变量$7(可以设置也可以不设置),从而使$7与其他命令保持在正确的上下文中

但是,您仍然需要设置$IP才能使其工作,因此所有这些看起来都是这样的:

IP = $1
ssh -p 22 pinger@tester.myserver.com "ping -i 2 -c 4 $IP | grep icmp_seq | awk '{print \$7}' | cut -b 6-12"
现在$IP在本地解析,而$7在远程解析


当我尝试连接到远程服务器以运行一些命令并使用局部变量时,我遇到了一些问题,就像您使用$IP所做的那样

你知道
ssh
命令会一直阻塞直到你退出它,然后
ping
等会在本地机器上执行,对吗?@Biffen在编写bash脚本和linux命令时,我完全是新手。那么,您建议我在脚本中做些什么/做些什么更改呢?互联网上充满了如何通过SSH执行命令的示例。所以我建议你问一下你最喜欢的搜索引擎。@Biffen,正如我在Q中所写的。我知道如何通过SSH执行命令。我只是写宋承宪。。。连接到远程服务器,然后在那里执行命令。Q是我如何将所有内容集成到一个bash脚本中并输出结果的。互联网上也有很多关于如何在脚本中通过SSH执行命令的示例。
IP = $1
ssh -p 22 pinger@tester.myserver.com "ping -i 2 -c 4 $IP | grep icmp_seq | awk '{print \$7}' | cut -b 6-12"