通过ssh将值传递给shell脚本
我想通过ssh向shell脚本传递一个值:通过ssh将值传递给shell脚本,shell,Shell,我想通过ssh向shell脚本传递一个值: 我有两台Linux机器:machine1和machine2 我在这些机器上有两个脚本:machine1上的“script1”和machine2上的“script2” 我已经完成了ssh设置,所以我可以从machine1无需密码登录machine2 /opt/script1 /opt/script2 但是没有打印字符串 请告诉我执行此操作的步骤。您能试试这样的脚本吗 脚本1.sh echo "enter your name" read name ssh
请告诉我执行此操作的步骤。您能试试这样的脚本吗 脚本1.sh
echo "enter your name"
read name
ssh root@machine2 "/opt/script2.sh $name"
脚本2.sh
echo $1
将命令行参数传递给shell脚本
$0是命令的名称
$1第一个参数
$2秒参数
$3第三参数等
$#参数总数
$@如果您尝试在machine1和machine2的运行会话中使用环境变量,所有参数都将列出 在machine2上运行脚本之前,必须预先设置环境 两种解决方案: 首先,您只能将machine1上script1中的第3行更改为: 这很好用 其他 但是,如果您更喜欢在script1示例中使用语法,则可以在machine2上更改仅script2以获取命令行参数,从而获得相同的结果:
#!/bin/sh
name="$1"
echo "$name"
警告不要同时应用这两个修补程序!有两个不同含义的不同答案!每一个都可以工作,但如果你应用第二次修改,它们将不再工作 如果我以Rupert script1的身份输入我的名字,我就会这样做
ssh root@machine2 "/opt/script2 Rupert"
Script2正在查找$name,但尚未在machine2上设置该名称,因此脚本将不打印任何内容
您可以将script2编辑到以下位置
#!/bin/sh
name=$1
echo "$name"
您应按以下方式更改脚本1:
#!/bin/sh
echo "enter your name"
read name
ssh root@machine2 `/opt/script2 $name`
第一件事:更改
/opt/script2
要执行的操作:echo“Name:$Name”
。现在,即使没有设置变量,也应该得到一些输出。如果您没有得到任何输出,那么您需要跟踪正在执行的内容(添加set-x
作为/opt/script2
的第一行)。如果您得到一些输出,那么您可以跟踪机器1上发生的情况。您也可以将echo“Name:$nme”
添加到/opt/script1
。您需要运行:ssh吗root@machine2sh-c“/opt/script2$name”
?Shebangs(包含二进制解释器路径的第一条注释行)不是无用的!即使如此,这可能有助于格式化!
ssh root@machine2 "/opt/script2 Rupert"
#!/bin/sh
name=$1
echo "$name"
#!/bin/sh
echo "enter your name"
read name
ssh root@machine2 `/opt/script2 $name`