如何以编程方式控制调制解调器?

相互联系

目前,我定期拨入约20-30台计算机。我当前正在Windows XP SP3上使用超级终端来执行此操作。一旦我的计算机连接到另一台计算机,我就得到了一些信息的字符串打印输出,我手动将这些信息打印出来并输入到Excel中。

虽然它可以很好地用于手动连接,但我认为这是一个繁琐的过程,应该自动化。现在,我每周都要这样做一次,因为它非常费力(通常每次30至40分钟),但理想情况下,我希望每天将其作为计划任务运行。但是,超级终端似乎没有提供任何脚本功能。此外,我尝试使用会话日志记录功能,但它似乎无法可靠地运行。

是否有某种方式,也许使用批处理,VBS或PowerShell脚本,可以依次拨打一系列计算机,然后自动将终端输出记录到带有时间戳的文本文件中?

需要增加的警告是,我还需要能够处理异常,例如,如果计算机很忙。超级终端具有“忙时重拨”功能,有时我会使用该功能或​​拨打其余计算机,然后再返回该计算机。我也需要将其构建到我的脚本中。

考虑到战争拨号是可能的,尽管它不记录输出,仅记录是否有载波音,但我觉得这是可以实现的。我应该如何实施呢?

如果可能,我需要一个批处理或VBS解决方案。我不确定Windows XP上对PowerShell的支持如何,由于种种原因,我宁愿不要在计算机上安装任何其他工具(例如Python等)。

澄清:我有一个朋友,他曾经制作了一个脚本,可以使用Hayes命令将其拨出该行。那是容易的部分;困难的部分是能够从远程计算机检测打印输出并将其记录到文本文件中。

超级终端的付费版本提供了沿这些方向编写脚本的功能,但我想通过使用自定义脚本免费进行此操作,该脚本还可以处理忙碌号码。

谢谢!

电源外壳

这是运行PowerShell脚本时得到的信息: 在此处输入图片说明

这是我尝试的脚本:

# Create your instance of the SerialPort Class
$serialPort = new-Object System.IO.Ports.SerialPort
# Set various COM-port settings
$serialPort.PortName = "COM3"
$serialPort.BaudRate = 1200
$serialPort.WriteTimeout = 500
$serialPort.ReadTimeout = 23000
$serialPort.DtrEnable = "true"
# or in one command
# $serialPort= new-Object System.IO.Ports.SerialPort COM#,Baudrate,None,8,one
# Open the connection
$serialPort.Open()
# write to it
$serialPort.WriteLine( "at+csq" + "`r" )
$serialPort.WriteLine( "atdt1NPANXXXXXX" + "`r" )
# wait
start-sleep -m 50
# read line
$line = $serialPort.ReadLine()
Write-Host $line
# write to it
$serialPort.Close()

到目前为止最接近的解决方案:

我能够获得的最接近的方法是使用AHK,它相当挑剔,但是在足够的时间里有用。我的计划是将其挂接到批处理脚本中,并传入每个数字并进行迭代,直到成功从每台计算机上获取打印输出为止。

TOOGAM

AutoHotkey.com可能会有所帮助。

我相信,使其可靠运行的关键技巧是使用正确的方法。简单地将击键转储到Microsoft Windows中,以使Windows将其提供给前台应用程序将不是最稳定的方法。这是我用来与PuTTY交互的一些代码。它运行良好,足以启动脚本,该脚本将启动PuTTY,但是即使PuTTY在后台,该程序仍可以与正确的PuTTY实例进行交互。

(您可能会想大幅修改此示例代码。)

sPuTTYloc:="C:\Users\\me\PuTTY\PuTTY.exe"
sSiteName:="NameOfSite"
Run, "%sPuTTYloc%" -load "%sSiteName%",,UseErrorLevel,sPuTTYPID

    if %sPuTTYPID%
    {
        WinWait, ahk_pid %sPuTTYPID%
        sleep ,5000
        IfWinExist,ahk_pid %sPuTTYPID%
        {
            ControlSend,,{Enter},ahk_pid %sPuTTYPID%
; other stuff
        else
        {
MsgBox "PuTTY Window closed, spot #1"
            return ; Apparently the PuTTY window closed
        }
        Sleep 1500
        IfWinExist,ahk_pid %sPuTTYPID%
        {
            ; do other stuff
        }
        else
        {
MsgBox "PuTTY Window closed, spot #2"
            return ; Apparently the PuTTY window closed
        }
        Sleep 1500
        return
    }
return

我仍然有事情要分解成碎片,多次调用“ IfWinExist”,这不一定有令人信服的理由。当我创建并最初调试脚本时,如果远程端终止了连接(这会导致我的PuTTY窗口关闭),我发现它对于调试很有用(或者至少感觉我对发生的事情有更好的了解)。 。

最主要的是,通过使用ControlSend使用由我的Run命令创建的PID给程序提供击键,如果发生了一些不好的情况,脚本不会继续尝试将击键发送到Windows并最终导致击键进入错误的程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何确定无线调制解调器的DSL速度?

来自分类Dev

如何找到ADSL调制解调器的IP地址?

来自分类Dev

如何抛弃CenturyLink光纤“调制解调器”

来自分类Dev

如何限制光纤调制解调器的带宽

来自分类Dev

xDSL调制解调器如何连接到ISP?

来自分类Dev

如何找到调制解调器是否支持VDSL?

来自分类Dev

如何使用sed或awk从调制解调器输出获得调制解调器模式?

来自分类Dev

更换光纤调制解调器?

来自分类Dev

测试调制解调器的容量

来自分类Dev

此调制解调器可以用作传真调制解调器吗?

来自分类Dev

使用与ISP提供的调制解调器不同的调制解调器

来自分类Dev

蜂窝调制解调器:pppd调制解调器挂断

来自分类Dev

Linux中的调制解调器的数据和控制通道?

来自分类Dev

ADSL调制解调器还是路由器?

来自分类Dev

DSL的调制解调器和路由器

来自分类Dev

路由器和调制解调器“参数”

来自分类Dev

如何从启动中删除调制解调器管理器?

来自分类Dev

如何使用Java代码连接到调制解调器路由器

来自分类Dev

调制解调器连接到路由器时如何启用NAT环回

来自分类Dev

ISP如何验证调制解调器/路由器连接?

来自分类Dev

使用USSD的GSM USB调制解调器的平衡

来自分类Dev

使用JSON远程访问Unet调制解调器

来自分类Dev

在检测调制解调器上运行脚本

来自分类Dev

使用USSD的GSM USB调制解调器的平衡

来自分类Dev

新的电缆调制解调器阻止TOR?

来自分类Dev

在访客VM上使用调制解调器

来自分类Dev

兼容Linux的56k调制解调器

来自分类Dev

带调制解调器的电涌保护

来自分类Dev

安全移除USB调制解调器?