我需要使用Linux机器在Windows Server 2012上远程运行某个批处理文件。
现在的问题是,批处理文件执行一些与SQL Server相关的操作(删除数据库,然后使用SQL脚本再次恢复它)。问题是,在完成它的工作之后,它需要在Windows终端中按下一个输入的形式推出“挂起状态”。或者那个州。我已通过在目标上直接使用PowerShell运行批处理文件来验证这一点。
那么如何从Linux模拟这种行为?仅供参考,我已经在Windows系统上安装了CYGWIN的openssh,并且我已经设置了无密码的SSH访问,因此该部分已经得到了处理。尽管如此,令我困惑的是如何将这些控制字符编码为通过SSH传递的字符串
我尝试传递\r\n
,这是在Windows机器上运行的CYGWIN守护程序无法识别的。当然,它不会因为它在Windows上模拟UNIX环境而赢了。但是\n
或更确切地说\\n
(如果这是正确的逃生方式)
这个问题(https://unix.stackexchange.com/questions/53581/sending-function-keys-f1-f12-over-ssh)讨论了通过SSH发送控制字符的问题。但是,当我将^M
附加到我的SSH命令字符串时,我得到相同的错误:
bash: ^M command not found
或者,如果您认为可以有更好的方法来确保批处理文件完成而不提供此类推送'请告诉我。
另外,如何检查通过SSH调用的命令是否确实在远程计算机上运行?附:我不想通过SSH检查它,但是在Windows机器上检查它。我的意思是在进程列表中它会是什么样子?就像在Linux上一样,我可以使用who -a
或ps aux | grep -i sshd
列出所有SSH连接,那么我可以在Windows Server 2012计算机上执行哪些操作以确保我的脚本已完成或仍在运行?