无法通过Perl脚本使用PSEXEC在远程机器中执行多个命令



我试图使用psexec连接到远程机器并执行多个命令,

当我试图连接到sieb服务器管理器并执行一些相关命令时,执行挂起

system("cmd /c c:\PsExec.exe \\$host_name  -u  $user_name  -p  $pwd  cmd /c " $command1 && srvrmgr/g enterprise server /u username /p password /e siebel /s siebserver /c "cmd to execute""");

我通过perl脚本运行该命令,能够运行其他命令,唯一的问题是,当我试图连接到服务器管理器并执行一些相关的命令时

无法确定有什么问题

您需要调试命令的转义:

use 5.012;
my $host_name = 'HOST_NAME';
my $user_name = 'USER_NAME';
my $pwd       = 'PWD';
my $command1  = 'COMMAND1';
my $cmd = "cmd /c c:\PsExec.exe \\$host_name  -u  $user_name  -p  $pwd  cmd /c " $command1 && srvrmgr/g enterprise server /u username /p password /e siebel /s siebserver /c "cmd to execute""";
print $cmd;

输出:

cmd /c c:PsExec.exe \HOST_NAME  -u  USER_NAME  -p  PWD  cmd /c " COMMAND1 && srvrmgr/g enterprise server /u username /p password /e siebel /s siebserver /c "cmd to execute""

几张纸条。

  1. 此反斜杠 $pwd没有执行任何操作
  2. 这些双引号"cmd to execute"可能需要在shell级别上进行转义

此外,如果您正在构建一个包含双引号的命令,那么最好使用不同的分隔符来生成字符串。

以下是我将如何修改您的命令

my $cmd = qq{cmd /c c:\PsExec.exe \\$host_name  -u  $user_name  -p  $pwd  cmd /c " $command1 && srvrmgr/g enterprise server /u username /p password /e siebel /s siebserver /c \"cmd to execute\""};

我可以看到srvrmgr命令和/g参数之间缺少空间

相关内容

  • 没有找到相关文章

最新更新