不借助Expect模块,如何实现对远程计算机程序的启动
时间:2011-08-27
来源:互联网
计算机A能通过ssh登录到远程计算机B1,B2,B3,...,Bn上,现在,在计算机Bi(1<=i<=n)的/root/目录下有两个可执行shell脚本文件:f1,f2。其中文件f1的内容只有一条语句:./f2 &> /dev/null &,而文件f2中才是实际运行的程序。我想编写perl脚本实现对所有Bi机器上程序(f2)的启动,请问在不借助Expect模块的情况下,如何实现登录到Bi上执行f1启动f2?曾经试图这样写脚本:
$cdCmd="cd /root";
$startCmd="\./f1";
system("ssh root\@$ip $cdCmd;$startCmd");
但是运行时提示:cannot access "f2":No such file or directory.
很明显登录到Bi上执行$cdCmd后再执行$startCmd时,控制已经回到A上了。
请问如何才能实现我想要的功能?这个问题一般怎么处理?期待高手帮忙解答!!!
$cdCmd="cd /root";
$startCmd="\./f1";
system("ssh root\@$ip $cdCmd;$startCmd");
但是运行时提示:cannot access "f2":No such file or directory.
很明显登录到Bi上执行$cdCmd后再执行$startCmd时,控制已经回到A上了。
请问如何才能实现我想要的功能?这个问题一般怎么处理?期待高手帮忙解答!!!
作者: heartgoon2010 发布时间: 2011-08-27
ssh的参数command可以是subshell command。例如:
Perl code
Perl code
family@OmicsHome:~$ cat /tmp/f1 #! /bin/bash ./f2 family@OmicsHome:~$ cat /tmp/f2 #! /bin/bash echo "f2 is running" family@OmicsHome:~$ ssh family@127.0.0.1 /tmp/f1 family@127.0.0.1's password: /tmp/f1: line 2: ./f2: No such file or directory family@OmicsHome:~$ ssh [email protected] "(cd /tmp/; /tmp/f1)" [email protected]'s password: f2 is running family@OmicsHome:~$
作者: panghuhu250 发布时间: 2011-08-27
上面的代码高亮显示的乱七八糟,为什么不支持shell语法呢?
family@OmicsHome:~$ cat /tmp/f1
#! /bin/bash
./f2
family@OmicsHome:~$ cat /tmp/f2
#! /bin/bash
echo "f2 is running"
family@OmicsHome:~$ ssh [email protected] /tmp/f1
[email protected]'s password:
/tmp/f1: line 2: ./f2: No such file or directory
family@OmicsHome:~$ ssh [email protected] "(cd /tmp/; /tmp/f1)"
[email protected]'s password:
f2 is running
family@OmicsHome:~$
family@OmicsHome:~$ cat /tmp/f1
#! /bin/bash
./f2
family@OmicsHome:~$ cat /tmp/f2
#! /bin/bash
echo "f2 is running"
family@OmicsHome:~$ ssh [email protected] /tmp/f1
[email protected]'s password:
/tmp/f1: line 2: ./f2: No such file or directory
family@OmicsHome:~$ ssh [email protected] "(cd /tmp/; /tmp/f1)"
[email protected]'s password:
f2 is running
family@OmicsHome:~$
作者: panghuhu250 发布时间: 2011-08-27
引用 2 楼 panghuhu250 的回复:
上面的代码高亮显示的乱七八糟,为什么不支持shell语法呢?
family@OmicsHome:~$ cat /tmp/f1
#! /bin/bash
./f2
family@OmicsHome:~$ cat /tmp/f2
#! /bin/bash
echo "f2 is running"
family@OmicsHome:~$ ssh [email protected] /tm……
上面的代码高亮显示的乱七八糟,为什么不支持shell语法呢?
family@OmicsHome:~$ cat /tmp/f1
#! /bin/bash
./f2
family@OmicsHome:~$ cat /tmp/f2
#! /bin/bash
echo "f2 is running"
family@OmicsHome:~$ ssh [email protected] /tm……
谢谢你!但还是有两个问题要问一下:
(1)ssh的参数command可以是subshell command,这句话能具体点吗?
(2)如果我执行system("ssh family\@127.0.0.1 \"(cd /tmp/;/tmp/f1)\"");的话,程序应该是启动一个子进程去执行ssh [email protected] "(cd /tmp/; /tmp/f1)";但是如果我执行system("ssh family\@127.0.0.1 cd /tmp/;/tmp/f1");程序似乎是启动两个进程分别取执行ssh family\@127.0.0.1 cd /tmp/;和/tmp/f1。关于system启动子进程的资料很少,这里能推荐点资料看看吗
作者: heartgoon2010 发布时间: 2011-08-27
引用 2 楼 panghuhu250 的回复:
上面的代码高亮显示的乱七八糟,为什么不支持shell语法呢?
family@OmicsHome:~$ cat /tmp/f1
#! /bin/bash
./f2
family@OmicsHome:~$ cat /tmp/f2
#! /bin/bash
echo "f2 is running"
family@OmicsHome:~$ ssh [email protected] /tm……
上面的代码高亮显示的乱七八糟,为什么不支持shell语法呢?
family@OmicsHome:~$ cat /tmp/f1
#! /bin/bash
./f2
family@OmicsHome:~$ cat /tmp/f2
#! /bin/bash
echo "f2 is running"
family@OmicsHome:~$ ssh [email protected] /tm……
???
作者: heartgoon2010 发布时间: 2011-08-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28