命令执行失败perl脚本
问题描述:
$ ssh是Net :: SSH :: Expect对象。情况就像,从我的本地机器我需要ssh到测试服务器。从测试服务器我可以ssh到其他服务器在测试并执行命令。所以$ ssh句柄是用于测试服务器的。现在从测试服务器我做ssh到其他机器并执行mkexport。命令执行失败perl脚本
while($no_of_exports)
{
my $share_name = &get_share_name();
my $path="$fs" . "$share_name";
$cmd="ssh mgmt001st001 mkexport $share_name $path --nfs \"*\\(rw,no_root_squash\\)\"";
print "CMD: $cmd";
$out=$ssh->exec("$cmd");
print $out;
--$no_of_exports;
}
Output :
[[email protected] ~]#
CMD: ssh mgmt001st001 mkexport kas142818597 /ibm/gpfs0/kas142818597 --nfs "*\(rw,no_root_squash\)"
97 --nfs "*\(rw,no_rxport kas142818597 /ibm/gpfs0/kas1428185
命令执行从Perl脚本 失败但是当我运行命令行相同的命令将它传递: 以下就是我直接从测试服务器执行相同的命令。
[[email protected] ~]# ssh mgmt001st001 mkexport kas327134640 /ibm/gpfs0/kas327134640 --nfs "*\(rw,no_root_squash\)"
EFSSG0019I The export kas327134640 has been successfully created.
EFSSG1000I该命令成功完成。
下面是脚本代码:
$cmd='ssh mgmt001st001 mkexport ' . $share_name . ' ' . $path . ' --nfs \'' . '\\*' . '\\(rw,no_root_squash\\)\'';
print "CMD: $cmd";
$out=$ssh->exec("$cmd");
print $out;
这里是输出:
CMD: ssh mgmt001st001 mkexport kas522199075 /ibm/gpfs0/kas522199075 --nfs '\*\(rw,no_root_squash\)'
75 --nfs '\*\(rw,no_xport kas522199075 /ibm/gpfs0/kas5221990
> root_squash\)'
EFSSF1156A An error occurred in NFS configuration. The client syntax cannot be parsed. See "man exports" for help. Cause: *(rw,no_
bash: line 1: root_squash): command not found
我有变化?对客户端名称做工精细......但什么是有问题*
$cmd='ssh mgmt001st001 mkexport ' . $share_name . ' ' . $path . ' --nfs "' . 'client002' . '\\\\(rw,no_root_squash\\)"';
print "CMD: $cmd";
$out=$ssh->exec("$cmd");
print $out;
CMD: ssh mgmt001st001 mkexport kas482978105 /ibm/gpfs0/kas482978105 --nfs "client002\\(rw,no_root_squash\)"
05 --nfs "client002\xport kas482978105 /ibm/gpfs0/kas4829781
> \(rw,no_root_squash\)"
EFSSG0019I The export kas482978105 has been successfully created.
EFSSG1000I The command completed successfully.
当您没有手动运行脚本时,脚本是如何运行的?它如何失败?任何错误消息/日志条目? – 2012-07-23 16:24:51
看起来像是一个缓冲区问题。脚本的输出显示CMD:ssh mgmt001st001 mkexport kas326656126/ibm/gpfs0/kas326656126 --nfs“* \(rw,no_root_squash \)”26 --nfs“* \(rw,no_rxport kas326656126/ibm/gpfs0/kas3266561 > oot_squash \)“/ EFSSF1156A NFS配置中发生错误。客户端语法不能被解析。请参阅“男士出口”寻求帮助。原因:*(rw,no_r bash:line 1:oot_squash):command not found – Joe 2012-07-23 16:44:37
什么是'$ ssh'?它是一个Net :: SSH :: Expect对象吗?他们的命令显着不同。在命令行版本中,您正在远程主机上执行'mkexport'。在Perl版本中,你在远程hsot上执行'ssh'。 – ikegami 2012-07-23 18:11:35