- 论坛徽章:
- 0
|
我打算用命令行vmrun控制虚拟机,例如在宿主机上(windows)执行调用虚拟机下的perl脚本,使该脚本开始工作。但是,我在宿主机上执行命令时,明明已经生成了脚本中该生成的文件(说明已经开始执行脚本),但该文件却为空。具体代码如下:其中$Bin/xxx.sh那行命令会打印日志到test.log文件中。如果在虚拟机中直接运行该脚本是能够正常运行的,使用vmrun执行却不行。请各位帮忙分析一下原因。我已经折腾了2天了,没有结果,很郁闷。谢谢!
调用虚拟机中脚本的命令如下:
vmrun -T ws -gu user -gp pwd runProgramInGuest E:\虚拟机\Ubuntu_11.10_64\Ubuntu_11.10_64.vmx "/usr/bin/perl" "/root/桌面/test.pl"
虚拟机里的代码(test.pl)如下:
- #!/usr/bin/perl
- use Thread;
- use FindBin qw($Bin);
- #print $Bin;
- #由于开始某进程后,该进程不会退出,所以需要使用另一个线程来监听那个进程的结果。
- my $thread=Thread->new(\&checkResult);
- my $thread2=Thread->new(\&startExec,"aaa","111");
- $thread->join();
- exit 0;
- $thread2->join();
- exit 0;
- sub startExec
- {
- my($user,$pwd)=@_;
- #system("ls > $Bin/test.log");
- my $auth_info= system("$Bin/xxx.sh -u $user -p $pwd | tee -a $Bin/test.log");
- }
- sub checkResult
- {
- my $wait_seconds=0;
- while(1)
- {
- sleep 1;
- $wait_seconds++;
- if($wait_seconds >= 20)
- {
- my $result=`cat $Bin/test.log`;
- if($result =~ /成功/){
- print "成功了!\n";
- }else{
-
- print "失败了!\n";
- }
- last;
- #exit 1;
- }
- }
- }
复制代码 |
|