- 论坛徽章:
- 0
|
本帖最后由 sunkun_99 于 2012-09-24 16:04 编辑
用expect模块去一个vmware系统某个目录/proc/scsi/qla2xxx/下有两个文件0和1, 想通过expect模块来获取文件名,然后发送cat命令读出文件内容。
取文件没有问题, 但是发送命令时文件名却被加上莫名期奇妙的字符,不知是何原因?请教各位大侠!
程序运行结果如下:- [root@ilaus1-dev test]# a.pl
- FileName: 0
- ls /proc/scsi/qla2xxx/;0m0m
- 0 1
- -sh: 0m0m: not found
- ~ #
- *********************************
- FileName: 1
- ls /proc/scsi/qla2xxx/;0m1m
- 0 1
- -sh: 0m1m: not found
- ~ #
- *********************************
- [root@ilaus1-dev test]#
复制代码 可以看到文件名0 和 1 没有任何问题,但是发送命令却变成了0m0m和0m1m。
程序源码如下:- #! /usr/bin/perl
- use strict;
- use Expect;
- use Data::Dumper;
- my $conn = Expect->new();
- $conn->log_stdout(0);
- $conn->spawn("ssh 192.168.1.103") or die "Can't spawn!";
- my $rc = $conn->expect(3,'-re', qr/#/);
- my @temp;
- if($rc) {
- $conn->send("ls /proc/scsi/qla2xxx\n");
- my $out;
- while($conn->expect(3,'-re', qr/[\s\S]+/)) {
- $out .= $conn->match();
- }
- @temp = split /\n+/, $out;
- @temp = grep !/ls|#/, @temp;
- }
- foreach (@temp) {
- my @t = split /\s+/, $_;
- foreach (@t) {
- print "FileName: ",$_,"\n";
-
- #这行发送命令将$_中的0或者1加上了其他字符,不知是和原因???
- $conn->send("ls /proc/scsi/qla2xxx/".$_."\n");
-
- my $out;
- while($conn->expect(3,'-re', qr/[\s\S]+/)) {
- $out .= $conn->match();
- }
- print $out,"\n*********************************\n";
- }
- }
- $conn->close() or die "Can't close!\n";
复制代码 |
|