我需要远程确定大量计算机上安装的 FileZilla Server 版本。
我知道,如果我初始化与 FZ 服务器的 Telnet 连接,我将收到包含服务器版本的响应,然后连接将挂起,直到使用quit、Ctrl+C或终止进程终止。
我正在寻找一种方法来遍历服务器列表,与每个服务器建立 Telnet 连接,并将带有服务器版本的消息记录在文件中。如果有一种更优雅的方式来获取这些信息,我会洗耳恭听 - 但这是我能想到的最好的方式。
我尝试过寻找答案,但大多数情况下只需要检查连接(即服务器是否在线),因此测试连接等有效。
到目前为止我所拥有的:
- 使用 plink,puTTY CMD 界面(所以我有一个可编写脚本的 Telnet 客户端)
- 使用 Powershell,因为我比 Windows CMD 脚本更了解它,但我愿意接受其他语言的答案。
我的主要问题是将响应保存在某处。Plink 在连接时打开一个新会话,我一直在努力将响应保存到主脚本日志文件(或根本)
这会调用一个新的 plink 会话,但我无法让它将输出发送到文件。
MyPC>Start-Process 'plink.exe' -ArgumentList '-telnet', '$IP', '-P', '$PORT'
给了我这个:
220-FileZilla Server version 0.9.43 beta
220-written by Tim Kosse ([email protected])
220 Please visit http://sourceforge.net/projects/filezilla/
但是,下面的代码不会将该消息发送到文件。我已经尝试过使用2>
和3>
以防万一它被发送到错误流或类似的但没有喜悦 - 它总是只是创建一个空文件。
Start-Process 'plink.exe' -ArgumentList '-telnet', '$IP', '-P', '$PORT' > C:\Temp\testps2.txt
我要么错过了一些极其简单的事情,要么是原则上看起来很简单但在实践中却非常复杂的事情之一。
我的第二步是在新会话打开后(以及捕获欢迎消息后)自动关闭它们 - 但在我可以捕获欢迎消息之前,没有太多意义进一步寻找。
任何帮助或想法,不胜感激;我有点不知所措。