AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[perl](server)

Martin Hope
Dom
Asked: 2023-01-31 12:03:13 +0800 CST

在 /usr/share/perl5/Net/Server/Fork.pm 第 168 行的数字 eq (==) 中使用未初始化的值

  • 6

在我的新 Debian Bookworm 上,/usr/share/perl5/Net/Server/Fork.pm每次 Munin 调用该文件时,该文件都会在日志中生成错误。记录的错误是

“在 /usr/share/perl5/Net/Server/Fork.pm 第 168 行的数字 eq (==) 中使用未初始化的值。”

在 Debian Bullseye 中,没有错误。

顺便说一下,这是两个版本之间的区别:

5c5
< #  Copyright (C) 2001-2017
---
> #  Copyright (C) 2001-2022
146a147
>         $self->register_child($pid, 'fork');
167c168
<     if (SOCK_DGRAM == $sock->getsockopt(SOL_SOCKET,SO_TYPE)) {
---
>     if (SOCK_DGRAM == unpack('i', $sock->getsockopt(SOL_SOCKET, SO_TYPE))) {

第 168 行是最后一个差异,出现问题的地方。

我不懂 Perl,那么如何解决这个问题并将错误报告给 Perl 包所有者?

perl
  • 1 个回答
  • 30 Views
Martin Hope
Lasse Michael Mølgaard
Asked: 2022-04-18 12:17:37 +0800 CST

Freeradius 与 dhcp 服务器:调用 perl 模块返回错误

  • 1

这是我之前的问题的延续,即从 Freeradius DHCP 服务器实现结合 Strongswan VPN 服务器发送静态路由。

在使用 tcpdump 和 Wireshark 调试 Freeradius 时,我发现我可以通过向dhcp 服务器配置文件的我的和部分添加DHCP-Classless-Static-Route和DHCP-Site-specific-25(又名 Microsoft 静态路由)选项来从 Freeradius DHCP 服务器发送无类静态路由。DHCP-DiscoverDHCP-Request

但是:如果我将默认网关设置为Strongswan 文档0.0.0.0建议的那样,Microsoft VPN 客户端似乎不接受静态路由。

至少我在使用route print -4.

此外,当我0.0.0.0通过 VPN 接口用作标准网关时,我无法在 Windows 客户端上手动添加路由。

然而:

假设我想192.168.200.0/24通过 VPN 访问子网,我的 VPN 服务器将地址分配192.168.201.2/24给我的 Windows 客户端。然后实际上可以通过使用 windows 命令通过 192.168.201.2 访问子网 192.168.200.0/24 来在 windows 客户端创建静态路由:

route add 192.168.200.0 mask 255.255.255.0 192.168.201.2

我知道它看起来有点奇怪,但我可以 ping192.168.200.0子网上的任何主机,所以只要它有效,我就很高兴。:-)

但是:如果我可以通过从我的 VPN 服务器通告路由而不是在所有 VPN 客户端上手动进行,我会更高兴。:-)

这意味着我必须对 Freeradius 中的 DHCP 配置进行一些动态编程。在我的情况下,这意味着我必须在 DHCP-Discover 和 DHCP-request 中引用 perl 模块,该模块获取分配的客户端 vpn ip 地址,将其转换为八位字节并将其与也以八位字节形式给出的静态路由组合。

一个例子:

子网192.168.200.0/24将被编码为0x18c0a8c8首先编码子网掩码。

客户端192.168.201.2/24将被编码,0xc0a8c902因为它只是将 IP 地址中的每个数字转换为十六进制。

路由的最终编码将是:0x18c0a8c8c0a8c902因为它只是两个字符串的连接。

然后我必须使用update reply以下代码:

  update reply {
    &DHCP-Classless-Static-Route = 0x18c0a8c8c0a8c902
    &DHCP-Site-specific-25 = 0x18c0a8c8c0a8c902
  }

如果还有更多路由,则所有路由将连接成一个长字符串。

棘手的部分:

假设您具有freeradius/3.0/sites-available/dhcp文件中的 Freeradius DHCP 服务器的默认配置。

DHCP-Discover 和 DHCP-Request 文件的一般结构如下:

dhcp DHCP-Request {
  update reply {
    &DHCP-Message-Type = DHCP-Ack
  }

  update reply {
    # General DHCP options, such as default GW, DNS, IP-address lease time etc.
  }

  update control {
    &Pool-Name := "vpn_pool"
  }

  dhcp_sqlippool

  ok
}

然后据我所知,我需要在dhcp_sqlippool被调用之后和返回之前调用我的 perl 模块ok,因为dhcp_sqlippool它是将 ipaddress 分配给 VPN 客户端的模块。

这意味着我的版本将类似于:

dhcp DHCP-Request {
  update reply {
    &DHCP-Message-Type = DHCP-Ack
  }

  update reply {
    # General DHCP options, such as default GW, DNS, IP-address lease time etc.
  }

  update control {
    &Pool-Name := "vpn_pool"
  }

  dhcp_sqlippool

  perl

  # If perl module returned no error
  if(ok) {
    update reply {
      # Perl-Route contains a hex encoded string with all routes.
      &DHCP-Classless-Static-Route = Perl-Route
      &DHCP-Site-specific-25 = Perl-Route      
    }
  }

  # Not sure if this one is needed?
  update reply {
    &DHCP-End-Of-Options = 255
  }

  ok
}

为了使其工作,我必须在freeradius/3.0/mods-enabled文件夹下启用 perl 并修改文件名以freeradius/3.0/mods-enabled/perl将其指向我的 perl 模块。比如:

filename = ${modconfdir}/${.:instance}/dhcp/Options.pm

但是我如何以正确的方式引用对 perl 的调用呢?

我以为我必须启用该行并在我的 perl 模块func_post_auth = post_auth中freeradius/3.0/mods-enabled/perl创建一个sub post_auth部分来处理来自 Freeradius 的调用,但据我在日志中看到的,我在 Freeradius 中收到以下错误:

(8) perl: perl_embed:: module = /etc/freeradius/3.0/mods-config/perl/dhcp/Options.pm , 
func = post_auth exit status= Undefined subroutine &main::post_auth called.
...
(8)     [perl] = fail
(8)   } # dhcp DHCP-Discover = fail

那么我没有看到的是什么?

perl freeradius dhcp-server
  • 1 个回答
  • 108 Views
Martin Hope
MiSFhE
Asked: 2021-06-25 19:27:03 +0800 CST

安装 perl 包时的问题

  • 1

我正在使用 Red hat(Red Hat Enterprise Linux 版本 8.2 (Ootpa) - 4.18.0-193.14.3.el8_2.x86_64)。当我使用 rpm 包和命令安装perl 包dnf install perl-libs-5.26.3-419.el8.x86_64.rpm时。但它要求

 - nothing provides perl(Carp) needed by perl-libs-4:5.26.3-419.el8.x86_64
 - nothing provides perl(Encode) needed by perl-libs-4:5.26.3-419.el8.x86_64
 - nothing provides perl(Exporter) needed by perl-libs-4:5.26.3-419.el8.x86_64

所以,我安装了perl (Carp) ,但它仍然要求perl(Exporter),然后我安装 perl(Exporter),它要求 perl(Carp)。

  - nothing provides perl(:MODULE_COMPAT_5.26.3) needed by perl-Exporter-5.72-396.el8.noarch
  - nothing provides perl(strict) needed by perl-Exporter-5.72-396.el8.noarch
  - nothing provides perl(warnings) needed by perl-Exporter-5.72-396.el8.noarch
  - nothing provides perl(:VERSION) >= 5.6.0 needed by perl-Exporter-5.72-396.el8.noarch
  - nothing provides perl(Carp) >= 1.05 needed by perl-Exporter-5.72-396.el8.noarch

有什么方法可以通过 pkg 或其他本地方式安装 perl(我可以将文件推送到服务器,但无法从服务器到互联网)?

redhat perl rhel8
  • 1 个回答
  • 358 Views
Martin Hope
stckvrw
Asked: 2021-06-25 01:05:22 +0800 CST

无法设置 Apache 以在 FreeBSD 中执行 PERL 文件

  • 0

我已经在 FreeBSD 12 中成功安装了 perl5 和 apache24。然后我启用了 apache24/etc/rc.conf并看到 index.html 放置在 path 中/usr/local/www/apache24/data。然后在文件中/usr/local/etc/apache24/httpd.conf我取消了该行的注释

AddHandler cgi-script .cgi

在里面<IfModule mime_module>并且也在.pl行尾添加。

然后我在同一个文件中添加了这一行

Options FollowSymLinks +ExecCGI

行后

Options Indexes FollowSymLink

并重新启动 Apache,但收到错误

要么所有选项都必须以 + 或 - 开头,要么没有选项可以

所以我在FollowSymLink没有任何错误的情况下添加了这一行并重新启动了 Apache。但是,如果我点击链接,mydomain.com/test.pl我仍然会看到我的 PERL 代码显示为纯文本而不是执行。

我的 PERL 代码是

#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "Hello world!";

如果我通过命令在命令行中运行代码,perl /usr/local/www/apache24/data/test.pl我会收到两行Content-type: text/html,即Hello world!. 该文件的权限为 755。

我还能做些什么来解决问题?

cgi perl freebsd apache-2.4
  • 1 个回答
  • 178 Views
Martin Hope
Timothy R. Butler
Asked: 2021-04-12 07:00:46 +0800 CST

2021 年 FastCGI 还好吗?

  • 0

似乎这里关于 FastCGI 的大多数讨论都在近十年前被冻结了,所以作为一个刚刚决定开始使用它的人,我想知道我是否在面对不可预见的安全性或兼容性问题时犯了错误。以下是一些引起我关注的事情:

  • 看起来像 Perl CPAN 模块这样的库已经好几年没有更新了。
  • Perl 模块在UTF-8 输出变得正常多年后抱怨说,缺乏更新似乎并没有为修复提供很大的希望。
  • 我还注意到,Mojolicious 几年前剥离了对 FastCGI 的支持,因为它不符合代码库的质量标准。我目前不使用 Mojolicious,但我发现这很值得注意。

今年终于觉醒到 FastCGI 是不是已经选择了死胡同?

我有使用 PHP 的客户,所以我对 PHP 支持很感兴趣,但我主要感兴趣的是是否有更好的面向未来的替代方案来支持 Perl,这是我用于大多数 CGI 程序的语言在服务器上。也许我想多了,FastCGI 就可以了。到目前为止,我使用mod_fcgid的是 Apache,尽管我的目标是让它直接与 Nginx 一起运行,我已经在使用它来提供静态内容。

perl fastcgi nginx mod-fcgid
  • 1 个回答
  • 336 Views
Martin Hope
user312442
Asked: 2021-02-26 03:04:53 +0800 CST

IO::Socket::SSL“内存不足”安装错误

  • 2

我想在 Solaris 10 机器上安装 OcsInventory Unix Agent 2.8。在目录中运行perl Makefile.PL命令时,它会列出代理正常工作所需的模块,例如

Please install Net::SSLeay if you want to use the software deployment.  
Please install nmap if you want to use the network discover feature.  
Warning: prerequisite IO::Socket::SSL 0 not found.  
Generating a Unix-style Makefile  
Writing Makefile for Ocsinventory::Unix::Agent  
Writing MYMETA.yml and MYMETA.json

所以我的工作是解决这些依赖关系并使其发挥作用。IO::Socket::SSL我在从 metacpan.org 下载该软件包后尝试安装该软件包,但该perl Makefile.PL命令只是抛出内存不足!错误。还尝试从 CPAN-shell 安装它,但遇到了与以前版本的软件包相同的错误。计算机有 8GB 内存,所以它不应该是问题的根源......你能给出任何建议如何从这里继续吗?

perl solaris-10 cpan
  • 1 个回答
  • 66 Views
Martin Hope
Brent
Asked: 2020-09-02 08:12:30 +0800 CST

StrawberryPerl 5.32.0.1 & Tk CPAN 错误:未定义对 MAX 的引用

  • 0

尝试使用 StrawberryPerl 5.32.0.1 通过 CPAN 安装 Tk,最后出现错误。尝试了 32 位和 64 位版本,并得到相同的错误。这是相关行的输出:

"C:\Strawberry\perl\bin\perl.exe" -MExtUtils::Mksymlists \
-e "Mksymlists('NAME'=>\"Tk\", 'DLBASE' => 'Tk', 'DL_FUNCS' => {  }, 'FUNCLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);"
g++ Tk.def -o blib\arch\auto\Tk\Tk.xs.dll -mdll -s -L"C:\STRAWB~1\perl\lib\CORE" -L"C:\STRAWB~1\c\lib" Tk.o chnGlue.o encGlue.o evtGlue.o objGlue.o pTk\tkres.o tixGlue.o tkGlue.o tkGlue_f.o tkWin32Dll.o  pTk/libpTk.a "C:\STRAWB~1\perl\lib\CORE\libperl532.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libimm32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libcomctl32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libcomdlg32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libgdi32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libcomctl32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libimm32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libmoldname.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libkernel32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libuser32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libgdi32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libwinspool.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libcomdlg32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libadvapi32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libshell32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libole32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\liboleaut32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libnetapi32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libuuid.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libws2_32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libmpr.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libwinmm.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libversion.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libodbc32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libodbccp32.a" "C:\STRAWB~1\c\i686-w64-mingw32\lib\libcomctl32.a" -Wl,--enable-auto-image-base
C:/Strawberry/c/bin/../lib/gcc/i686-w64-mingw32/8.3.0/../../../../i686-w64-mingw32/bin/ld.exe: encGlue.o:encGlue.c:(.text+0x3f): undefined reference to `MAX'
C:/Strawberry/c/bin/../lib/gcc/i686-w64-mingw32/8.3.0/../../../../i686-w64-mingw32/bin/ld.exe: encGlue.o:encGlue.c:(.text+0x9f): undefined reference to `MAX'
C:/Strawberry/c/bin/../lib/gcc/i686-w64-mingw32/8.3.0/../../../../i686-w64-mingw32/bin/ld.exe: encGlue.o:encGlue.c:(.text+0x798): undefined reference to `MAX'
collect2.exe: error: ld returned 1 exit status
gmake: *** [Makefile:619: blib\arch\auto\Tk\Tk.xs.dll] Error 1
  SREZIC/Tk-804.035.tar.gz
  C:\STRAWB~1\c\bin\gmake.exe -- NOT OK
Stopping: 'install' failed for 'Tk'.
Failed during this command:
 SREZIC/Tk-804.035.tar.gz                     : make NO
perl cpan
  • 1 个回答
  • 167 Views
Martin Hope
Paul
Asked: 2020-06-28 17:38:40 +0800 CST

SpamAssassin local.cf DMARC 配置识别拒绝和无,但不识别隔离

  • 1

对于 SpamAssassin 3.4.2,我添加了以下配置规则集,local.cf目的是为失败的 DMARC 测试提供垃圾邮件分数。

DMARC 和 SPF Authentication-Results 标头由 创建,opendmarcDKIM Authentication-Results 标头由opendkim.

预期输出是添加到 X-Spam-Report 标头的所有三个标头结果的分数。

实际输出仅适用于在 X-Spam-Report 标头中添加p=reject或p=none具有适当分数的域,但p=quarantine即使 DMARC、DKIM 和 SPF Authentication-Results 标头也不会向 X-Spam-Report 标头添加任何内容已按预期添加。

添加到/etc/spamassassin/local.cf:

ifplugin Mail::SpamAssassin::Plugin::AskDNS
askdns __DMARC_POLICY_NONE _dmarc._AUTHORDOMAIN_ TXT /^v=DMARC1;.*\bp=none;/
askdns __DMARC_POLICY_QUAR _dmarc._AUTHORDOMAIN_ TXT /^v=DMARC1;.*\bp=quarantine;/
askdns __DMARC_POLICY_REJECT _dmarc._AUTHORDOMAIN_ TXT /^v=DMARC1;.*\bp=reject;/

meta DMARC_REJECT !(DKIM_VALID_AU || SPF_PASS) && __DMARC_POLICY_REJECT
score DMARC_REJECT 10
meta DMARC_QUAR !(DKIM_VALID_AU || SPF_PASS) && __DMARC_POLICY_QUAR
score DMARC_QUAR 5
meta DMARC_NONE !(DKIM_VALID_AU || SPF_PASS) && __DMARC_POLICY_NONE
score DMARC_NONE 0.1
endif # Mail::SpamAssassin::Plugin::AskDNS

配置有什么问题?

perl spamassassin
  • 1 个回答
  • 1571 Views
Martin Hope
Dave Everitt
Asked: 2020-05-24 12:40:58 +0800 CST

保护由 Perl 写入的全球可写 .shtml 文件的最佳方法?

  • 0

Perl 脚本

我有一个在旧的 Debian 6 服务器上运行的 Perl 脚本(直到我移动到新服务器),它在 .shtml 文件中打开一个可编辑窗格,只接受来自单个用户的Creole标记输入,并写入两个用户可编辑的 . shtml 文件,并在保存编辑后的 ​​.shtml 文件时制作每个文件的备份副本。.shtml 文件权限为606或-rw----rw-.

编辑后,非技术用户必须输入密码才能触发脚本,并且(在不太可能的情况下,他会这样做)“脚本”标签以纯文本形式出现。

在切换服务器之前,这些服务器曾经在suEXEC其下运行(我没有设置也不想使用),但现在它们需要更改权限才能运行。

可写文件

这两个可编辑的 .shtml 文件是 SSI,virtualHost 块设置为IncludesNoExec.

用户目录中没有 .htaccess 文件public_html,唯一的其他用户只进行过简单的 HTML 编辑并且没有其他知识,我在cgi-bin上面的public_html文件夹中管理脚本,用户目录中的所有文件都是所有者/组用户名。

我的问题,考虑到上述情况:

  1. 如果文件权限是606/有什么我应该注意的-rw----rw-吗?
  2. 现在我还能做些什么来进一步保护这样一个旧的 Debian 服务器?

我已经考虑将服务器端口从 22 更改为更高的端口,我已经在另一台服务器上完成了这项工作,但是对于在这个旧服务器上运行的几个站点,我还无法访问他们的 DNS 或远程登录设置,所以这还不是一个选择。像许多人一样,我并不是真正的服务器管理员,但在我的共同开发人员去世时必须维护一些东西。

security perl file-permissions server-side-includes
  • 1 个回答
  • 69 Views
Martin Hope
saffron
Asked: 2020-05-22 09:03:05 +0800 CST

如何使用 awk 分隔变量并使用 ansible 将其附加到文本文件

  • 0

作为 ansible playbook 的额外变量,我得到的是“CHOW_app/timmy_app1/johnn_app3/harper_app4/mona_app5”。这作为单个变量传递给剧本。我必须将其分开并以这种格式保存在文本文件中。

REVOKE CHOW app
REVOKE timmy app1
REVOKE johnn app3
REVOKE harper app4 
REVOKE mona app5

我认为使用 awk 命令可以实现。但我不知道这是否可以在 Ansible 剧本本身中完成。有谁知道我们如何使用 awk 将其分离并将其存储在 Ansible 本身的 txt 文件中。

perl shell awk ansible ansible-playbook
  • 1 个回答
  • 1170 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve