我需要编写一个程序,在网络上自动检测C#中的Windows和unix机器,然后将文件夹从Windows共享目录复制到远程机器,并收集机器上有多少个处理器。我不知道任何有助于检测机器及其ips的C#函数。我无权访问活动目录或拥有所有计算机的中央服务器。我可以创建一个在客户端计算机上运行的perl程序。 (我也不确定如何在unix机器上访问Windows共享)一般指导和代码示例将不胜感激
答案 0 :(得分:1)
你有两个非常不同的问题。
1.检测机器是Windows还是unix机器。
$^O
会在Perl中为您提供。
$ perl -E'say $^O'
linux
>perl -E"say $^O"
MSWin32
2.从unix机器访问远程Windows文件共享。
嗯,对于初学者来说,这是一个SMB文件共享。
所以你真正需要的是一个SMB客户端。我很快找到了Filesys::SmbClient,一个似乎符合要求的Perl模块。
答案 1 :(得分:0)
您可以使用Nmap来发现网络计算机,它是无客户端的,并且使用-O参数可以告诉您计算机是运行Windows操作系统还是Linux操作系统。然后,您可以使用SNMP或WMI来检索CPU数量,即使这需要计算机安装了SNMP或WMI。但是,如果客户端在远程计算机上运行,一切都会变得更加容易,特别是如果您必须复制文件。