我正在尝试使用psexec连接到远程计算机,并执行多个命令,
当im尝试连接到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脚本运行命令,能够运行其他命令,唯一的问题是,当我尝试连接到服务器管理器并执行一些相关命令时
不能弄清楚问题是什么
发布于 2014-10-11 03:38:58
您需要调试命令的转义:
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""几个笔记。
\ $pwd isn\ $pwd"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\\""};发布于 2014-10-15 19:03:56
我可以看到srvrmgr命令和/g参数之间缺少空格
https://stackoverflow.com/questions/26294511
复制相似问题