一个 session 中的 Perl ssh 操作

标签 perl

在下面的代码中,我试图通过 ssh 连接到另一台机器并检查文件是否存在。
如果文件存在,那么我需要检查访问该文件的人是否是该文件的创建者,即他的用户名是否在日志文件中。
如果存在,那么我需要删除该文件。如何通过单次登录实现此目的,即用户只需输入一次密码

  $user = $ENV{USER};
  $il_check_cmd = "cat $shared_il_path/$il_name/info/.info_cat.log";
  my $ssh_delete = Net::SSH::Perl->new($hostname, protocol => '1,2', debug => 0, interactive => 1)        ;
  $ssh_delete->login($username, $password);
  ($stdout,$stderr,$exit) = $ssh_delete->cmd("$il_check_cmd");
  if((defined $stderr) && ($stderr =~ /No such file or directory/))
  {
     print "-E- $RUNCMD: \"$il_name\" you have entered does not exist in \"$shared_il_path\"!!        !\n";
     print "-E- $RUNCMD:                        or\n";
     print "-E- $RUNCMD: \"$il_name\" does not contain \".info_cat.log\" file!!!\n";
     print "-E- $RUNCMD: Exiting...\n";
     exit;
  }
  @content = split(/ /,$stdout);
  chomp($user_e = shift(@content));
  if($user_e =~ /\b$user\b/)
  {
            print "This is the user who created the file";
             //then remove the $shared_il_path/$il_name/info/.info_cat.log

   }

最佳答案

考虑使用 Net::SSH::Expect , 反而。链接页面包含 SSH session 的示例代码。

关于一个 session 中的 Perl ssh 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9563139/

相关文章:

perl - 在perl中,结构的替代方法是什么?

java - 使用 Cygwin 中启动的 perl 脚本运行带有 2 个参数的 Java 文件

linux - 命令行 : monitor log file and add data to database

perl - 这个 Perl foreach 是做什么的?

perl - Perl 中的最大整数

perl - 如何获取 Perl/Tk 文本小部件中的文本?

python - 提取两个子字符串之间匹配的字符串部分

javascript - 在 Perl-CGI 生成的页面中包含 JavaScript

perl - 将字符串 "0x30"和十六进制数 0x30 传递给 hex() 函数之间的区别

c - 在 Windows 中,与 C 程序一起执行的 Perl 代码将错误的字节长度写入内存