使用Perl时出错-Proc :: ProcessTable。适用于cmd行,不适用于.pl文件

dcparham

奇怪:我可以通过cmd行搜索一个进程;但是通过.pl文件我得到一个错误,

"Can't call method "table" on an undefined value".

代码:

perl -e '
    use Proc::ProcessTable; 
    my $t = new Proc::ProcessTable;
    foreach $p (@{$t->table}) {
        foreach $f ($t->fields) { 
            my $result = $p->{fname} cmp "top"; 
            if($result == 0) { print $p->{pid}; }
        }
    }'

有人可以帮我弄清楚我可能会缺少什么吗?

UPDATED [已添加严格,和警告/警告!]-现在导致此错误:

Global symbol "$p" requires explicit package name at x.services.pl line 9.
Global symbol "$t" requires explicit package name at x.services.pl line 9.
Global symbol "$t" requires explicit package name at x.services.pl line 9.
Global symbol "$p" requires explicit package name at x.services.pl line 9.
Global symbol "$t" requires explicit package name at x.services.pl line 9.    

代码:

1 #!/usr/bin/perl
2 use Net::SSH::Perl;
3 use Net::SSH::Expect;
4
5 use strict;
6 use warnings;
7
8 my $remote_host = "severid.company.com";
9 my $serviceInfo = `ssh $remote_host -l myuid -i /home/myuid/.ssh/authorized_keys perl -e 'use Proc::ProcessTable; my $p; my $t; $t = new Proc::ProcessTable; foreach $p (@{$t->table}){print "!"}'`;
10 exit(0);

所以,我正在尝试使用Proc :: ProcessTable将pid#返回到变量中。如果使用这些多个cmd不正确,执行此操作的正确方法是什么?

清醒

所以,第一个问题:

  • 您使用的是Net::SSH模块,但是使用“系统”命令来完成肮脏的工作。一个或另一个是多余的。

  • 将perl内联到ssh会产生插值错误的风险-您如何知道在哪里'处理?(例如您的shell,ssh,远程shell,perl)。

  • 您要如何处理内联的perl?看起来这是一种非常复杂的操作方式ps -ef | grep top

这样做会更明智吗?

foreach  ( `/usr/bin/ssh $remote_host -l myuid -i /home/myuid/.ssh/authorized_keys ps -ef` ) {
    chomp;
    my ( $UID, $PID, $PPID, $C, $STIME, $TTY, $TIME, $CMD ) = split;
    if ( $cmd eq "top" ) { 
        print $PID; 
    }
}

(或使用Net :: SSH的类似工具);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用mplayer打开,不适用于视频文件

来自分类Dev

进程替换不适用于使用iconv的输入文件

来自分类Dev

使用 powershell 读取文本文件仅适用于 powershell 屏幕命令,而不适用于脚本

来自分类Dev

最小化角度文件时,Grunt usemin任务不适用于嵌套文件

来自分类Dev

Perl:重命名不适用于$ value文件名

来自分类Dev

Linux控制台Perl替换不适用于大文件

来自分类Dev

使用输入类型=文件的文件上传不适用于IE中的第一个文件,适用于后续上传

来自分类Dev

从文件后面的ASPX代码路由时Response.RedirectToRoute不适用于MVC区域

来自分类Dev

使用https的Cordova文件传输插件不适用于Windows

来自分类Dev

批量移动文件不适用于双击,但可从命令行使用

来自分类Dev

在使用Pow和Nginx的开发中,文件上载不适用于Rails 4

来自分类Dev

URL +锚不适用于使用jQuery从文件加载的元素

来自分类Dev

使用 CMake 包含 C 文件/链接不适用于 C++:不能包含函数

来自分类Dev

使用 jquery 上传文件不适用于 Edge 和 Safari (v. 11.1)

来自分类Dev

对于文件中的行不适用于try / except

来自分类Dev

SimpleImage不适用于大文件

来自分类Dev

.htaccess不适用于CSS文件

来自分类Dev

静态文件不适用于GAE

来自分类Dev

NTFS权限不适用于文件

来自分类Dev

Neocomplete不适用于vim文件

来自分类Dev

tarfile 不适用于 .gz 文件

来自分类Dev

Chomp不适用于Perl脚本

来自分类Dev

使用AWK搜索.CSV文件-仅适用于第一行

来自分类Dev

重命名文件夹中的文件名时,通配符不适用于重命名

来自分类Dev

SSL适用于Chrome,但有时适用于Firefox,不适用于IOS,Android或Blackberry

来自分类Dev

HTML5图像预览不适用于克隆的文件输入(在原始文件上可以使用)

来自分类Dev

jQuery仅适用于.html文件,而不适用于.PHP文件?

来自分类Dev

Nginx安全链接模块不适用于php文件,但适用于静态文件

来自分类Dev

相同路径适用于文件,不适用于文件夹

Related 相关文章

  1. 1

    使用mplayer打开,不适用于视频文件

  2. 2

    进程替换不适用于使用iconv的输入文件

  3. 3

    使用 powershell 读取文本文件仅适用于 powershell 屏幕命令,而不适用于脚本

  4. 4

    最小化角度文件时,Grunt usemin任务不适用于嵌套文件

  5. 5

    Perl:重命名不适用于$ value文件名

  6. 6

    Linux控制台Perl替换不适用于大文件

  7. 7

    使用输入类型=文件的文件上传不适用于IE中的第一个文件,适用于后续上传

  8. 8

    从文件后面的ASPX代码路由时Response.RedirectToRoute不适用于MVC区域

  9. 9

    使用https的Cordova文件传输插件不适用于Windows

  10. 10

    批量移动文件不适用于双击,但可从命令行使用

  11. 11

    在使用Pow和Nginx的开发中,文件上载不适用于Rails 4

  12. 12

    URL +锚不适用于使用jQuery从文件加载的元素

  13. 13

    使用 CMake 包含 C 文件/链接不适用于 C++:不能包含函数

  14. 14

    使用 jquery 上传文件不适用于 Edge 和 Safari (v. 11.1)

  15. 15

    对于文件中的行不适用于try / except

  16. 16

    SimpleImage不适用于大文件

  17. 17

    .htaccess不适用于CSS文件

  18. 18

    静态文件不适用于GAE

  19. 19

    NTFS权限不适用于文件

  20. 20

    Neocomplete不适用于vim文件

  21. 21

    tarfile 不适用于 .gz 文件

  22. 22

    Chomp不适用于Perl脚本

  23. 23

    使用AWK搜索.CSV文件-仅适用于第一行

  24. 24

    重命名文件夹中的文件名时,通配符不适用于重命名

  25. 25

    SSL适用于Chrome,但有时适用于Firefox,不适用于IOS,Android或Blackberry

  26. 26

    HTML5图像预览不适用于克隆的文件输入(在原始文件上可以使用)

  27. 27

    jQuery仅适用于.html文件,而不适用于.PHP文件?

  28. 28

    Nginx安全链接模块不适用于php文件,但适用于静态文件

  29. 29

    相同路径适用于文件,不适用于文件夹

热门标签

归档