需要在 perl 中从远程机器获取 Oracle 和 MySQL 的版本
Posted
技术标签:
【中文标题】需要在 perl 中从远程机器获取 Oracle 和 MySQL 的版本【英文标题】:Need to get the Versions of Oracle and MySQL from a remote machine in perl 【发布时间】:2020-08-14 19:05:02 【问题描述】:我对 Perl 非常陌生。我被告知要编写一个脚本,其中只有远程机器的 IP 地址。我试图通过IP地址ping机器:
$retval=system("ping xxx.xxx.x.xxx");
if ($retval==0)
print "It pings\n";
else
print "ping failed\n";
-
现在我想知道那台机器上的操作系统版本 (xxx.xxx.x.xxx) 是 WindowsServer 2019 还是任何具有该版本的 Linux 版本。
想知道该机器的数据库版本是Oracle 还是mysql 及其版本。
想知道它是否安装了 Weblogic Server 或 IIS 服务器,如果安装了它的版本是什么。
我希望将操作系统名称及其版本、数据库名称及其版本以及服务器版本保存在一个文件中。 有人可以帮助我使用 Perl 脚本成功实现这一目标吗?
提前致谢。
【问题讨论】:
如果远程机器有openssh,你可以试试Net::OpenSSH @HåkonHægland,谢谢先生的回复!远程机器没有安装它们。你能推荐其他方法吗? 查看Net::Telnet 了解不加密数据的替代方案 对于数据库版本:像往常一样使用DBI
连接到数据库,对于MySQL 使用$dbh->mysql_serverversion
,对于Oracle 使用$dbh->func('ora_server_version')
。
【参考方案1】:
您应该考虑使用作为 Perl 安装标准部分的 Net::Ping 模块,而不是使用像 ping
这样的外部程序。
摘自:
use Net::Ping;
$p = Net::Ping->new();
print "$host is alive.\n" if $p->ping($host);
$p->close();
关于获取更多信息,我赞同使用Net::OpenSSH 的建议。在评论中,您说您不能使用它,因为它没有安装在您的远程系统上,但我认为您误解了它的工作原理。该模块只需要安装在您的本地系统上。远程系统只需要一个ssh
服务器。
或者,您可以查看Net::SNMP 或Nmap::Parser。
【讨论】:
感谢@Dave 的回复。我想要那个远程机器上的数据库和操作系统的版本。我怎样才能得到它?【参考方案2】:为了获得远程操作系统的版本,我想你没有太多的解决方案:
使用可以执行 TCP 扫描的扫描器(例如 nmap),它可以“可能”将操作系统名称/版本发回给您(可能有 Perl 模块可以执行此操作,但您也可以通过perl 来做到这一点
远程连接到机器(使用该机器上支持的协议,例如 SSH 或类似协议,具体取决于操作系统..)并运行系统命令(例如 *nix 机器上的“uname”)以获取操作系统版本。 使用这种方法,您还可以收集其他任何东西(数据库、中间件等) 但这意味着您知道如何连接到另一台机器(并且您通常了解操作系统..)。
【讨论】:
以上是关于需要在 perl 中从远程机器获取 Oracle 和 MySQL 的版本的主要内容,如果未能解决你的问题,请参考以下文章
使用 Pywinrm 在远程 Windows 机器中从 linux 执行 vbs 脚本(执行双跳)
如何在 MaxOSX 中从 JDBC 调用 Oracle TimesTen
如何使用 perl 和 Net::OpenSSH 在远程机器上启动后台进程?