小编raz*_*z3r的帖子

Perl多线程和foreach

我正在编写一个简单的Perl脚本,它应该同时运行其他Perl脚本.我不知道如何使主程序等待运行线程.由于许多原因,睡眠不是一个合适的解决方案.这是我的"主要"脚本:

#!/usr/bin/perl
use threads;
main:
{
    if ($#ARGV == -1) { usage(); exit(1); }
    my $hostname = $ARGV[0];
    my $thrssh = threads ->create(\&ssh, $hostname);
    my $thrdns = threads ->create(\&dns, $hostname);
    my $thrping = threads ->create(\&ping, $hostname);
    my $thrsmtp = threads ->create(\&smtp, $hostname);
    my $thrproxy = threads ->create(\&proxy, $hostname);
}
sub ssh {
    threads->detach();
    my $hostname = @_;
    #print "SSH\n";
    #LAUNCH SSH SCRIPT
}
#OTHER SUBROUTINES...
sub proxy {
    threads->detach();
    my $hostname = @_;
    #print "PROXY\n";
    #LAUNCH PROXY SCRIPT
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试运行这个脚本,我可以注意到的第一件事是打印是"顺序的",我认为文本搞砸了,但也许打印是独家我不知道.主要问题是最后两个子程序没有时间执行. …

perl multithreading

4
推荐指数
1
解决办法
2883
查看次数

Nmap不检索MAC地址和供应商

我在Nmap中发现了一个奇怪的行为(我使用版本5.51,如果这很重要,但我在版本5.00时遇到了同样的问题),在某些网络上,这个插件不会检索MAC地址,因此也就是供应商.奇怪的是它几乎检索所有操作系统等等,但它不会打印MAC地址.怎么可能?这是我经常使用的命令:

nmap -A -O 192.168.1.0/24 -oX mynetwork.xml
Run Code Online (Sandbox Code Playgroud)

macos networking auditing nmap

4
推荐指数
2
解决办法
2万
查看次数

如何使用XPath和Perl检索属性

我有以下XML结构:

<RECORD>
<TYPE ID="check_ping">
<HOSTS>
<HOST H="192.168.0.1" W="50,1%" C="100,1%" />
<HOST H="192.168.0.2" W="50,1%" C="70,1%" />
</HOSTS>
</TYPE>
<TYPE ID="check_ssh">
<HOSTS>
<HOST H="192.168.0.3" P="21"/>
<HOST H="192.168.0.4" P="21"/>
<HOST H="192.168.0.4" P="21"/>
</HOSTS>
</TYPE>
....
</RECORD>
Run Code Online (Sandbox Code Playgroud)

我还有一个应该读取XML的Perl脚本,我正在使用XML :: XPath模块.

use XML::XPath;
#.....
my $xp = XML::XPath->new(filename => 'test.xml');
#RETRIEVE ALL HOSTS WITH CHECK_SSH
my $querysshh = '/RECORD/TYPE[@ID="check_ssh"]/HOSTS/HOST';
$nodeset = $xp->find($querysshh);
foreach $mynode ($nodeset->get_nodelist) {
#HOW DO I RETRIEVE ATTRIBUTES NOW?
}
#.....
Run Code Online (Sandbox Code Playgroud)

如何检索这些节点的属性?例如,如果我想读HP我需要做什么?我查看了模块文档,但我找不到任何有用的方法.

xml perl xpath

3
推荐指数
1
解决办法
4870
查看次数

如何检索通过SNMP接收的发送字节

我正在编写一个Perl脚本,它应该检索从远程主机发送/接收的字节,长话短说我想监视网络流量.请注意,主机可能是实际主机或其他类似路由器/交换机等.我检索的数据将存储在循环数据库中,但这并不重要.

我做的第一件事是检索主机的接口,然后我应该寻找流量使用.我可以使用OID吗?有没有存储这些价值的表格?

use Net::SNMP;
use Net::SNMP::Interfaces;

main:
{

my $session;
my $hostname = '192.168.x.x';
my $community = 'test';
my $error;
my $oid = '';
my $result;

# RETRIEVING INTERFACES
my $interfaces = Net::SNMP::Interfaces->new(Hostname => $hostname, Community => $community);
my  @ifnames = $interfaces->all_interfaces();
foreach $interface (@ifnames) {
    my $name = $interface->name();
    print "$name\n";    
}

# SNMP SESSION OPEN
($session, $error) = Net::SNMP->session(-hostname => $hostname, -community => $community);
print "SESSION: $session\n";
if (!defined $session) {
    print "SESSION ERROR: $error\n";
    $session->close();
    exit(1);
} …
Run Code Online (Sandbox Code Playgroud)

perl snmp oid

2
推荐指数
1
解决办法
5205
查看次数

如何在Perl完成后清理线程?

我有一个Perl脚本,在验证某个表达式时启动线程.

while ($launcher == 1) {
    # do something
    push @threads, threads ->create(\&proxy, $parameters);
    push @threads, threads ->create(\&ping, $parameters);
    push @threads, threads ->create(\&dns, $parameters);
    # more threads
    foreach (@threads) {
    $_->join();
    }
}
Run Code Online (Sandbox Code Playgroud)

第一个循环运行正常,但在第二个循环中,脚本退出时出现以下错误:

线程已经在launcher.pl第290行加入.Perl退出活动线程:1运行并且未加入0完成并且取消加入0运行和分离

我想我会清理@threads,但我怎么能这样做?我甚至不确定这是不是问题.

perl multithreading

2
推荐指数
1
解决办法
2623
查看次数

如何遍历特定表单的所有打开实例?

我需要更新动态创建的Form2的ListBox.让我们说在我必须更新这个ListBox的事件中(当然在Form1中)我没有这个Form2的引用所以我不能调用UpdateList方法(不,我不能让它静态) .

我甚至不知道是否有Form2打开,它可能与否.

你有什么建议?

有没有办法循环使用Form2的所有开放性?

代码示例:

//Form1

public void event()
{
    //UPDATE FORM2 LISTBOX
}

//SOMEWHERE IN FORM1

Form2 runTime = new Form2();

//Form2

public void UpdateList()
{
    //UPDATE LISTBOX
}
Run Code Online (Sandbox Code Playgroud)

c# forms winforms

1
推荐指数
1
解决办法
2238
查看次数

如何在Perl中通过LDAP验证登录?

我写了一个绑定到LDAP服务器的小脚本,并检索所有用户和用户信息.现在我想写另一个绑定到LDAP服务器然后测试给定登录的那个.我怎样才能做到这一点?

my $ldap = ldapConnect();
my $user = 'user';
my $pwd = 'pwd';
# TEST USER AND PWD BUT HOW?

sub ldapConnect {
my $ldap = Net::LDAP->new('192.168.*.*');
my $password = '***';
$ldap->bind('cn=Administrator,cn=Users,DC=***,DC=***', password=> $password);
return $ldap;
}
Run Code Online (Sandbox Code Playgroud)

perl login ldap

1
推荐指数
2
解决办法
9171
查看次数

如何在Perl中将XML转换为字符串

我需要发送一个XML文件作为电子邮件的正文.我想将XML转换为简单的字符串,将其放入正文然后发送电子邮件.我记得我之前在C#中通过将文件作为PlainText加载到RichTextBox中来实现.

my $xmlfilename;
my $myxml;
# XML TO STRING?
my $email = Email::Simple->create(
header => [
To      => '"AB <a@b.it"',
From    => '"CD" <c@d.it>',
Subject => "TEST",
],
body => $myxml,
);
sendmail($email);
Run Code Online (Sandbox Code Playgroud)

任何的想法?

xml string email perl

0
推荐指数
1
解决办法
1258
查看次数

标签 统计

perl ×6

multithreading ×2

xml ×2

auditing ×1

c# ×1

email ×1

forms ×1

ldap ×1

login ×1

macos ×1

networking ×1

nmap ×1

oid ×1

snmp ×1

string ×1

winforms ×1

xpath ×1