如何解决在 cygwin 的 bash shell 中调用 windows 的 netsh 时出现问题
我有 3 台计算机(让我称它们为 N1、N2、N3),其系统如下:
- N1:Windows 2019 Server Essential 64 位,带有 CYGWIN_NT-10.0 -3.0.7(0.338/5/3) x86_64
- N2:Windows 10 专业版 64 位,带有 CYGWIN_NT-10.0 - 3.1.7(0.340/5/3) x86_64
- N3:Windows 10 专业版 64 位,带有 CYGWIN_NT-10.0 - 3.1.7(0.340/5/3) x86_64
从 Linux 机器通过 Cygwin 的 SSHD 访问它们,我可以(远程)在所有这 3 台计算机上运行(windows-)命令,例如
/c/Windows/System32/NET start <SERVICENAME>
/c/Windows/System32/ATTRIB
/c/Windows/System32/HELP
/c/Windows/System32/NETSH
- ...
它们都按预期工作。
N3 上的命令 NETSH
除外!
在 N3 上,调用
/c/Windows/System32/NETSH
什么都不做:没有错误消息,没有命令提示符,即使提供像“?”这样的参数。 (带或不带引号)或任何其他参数,当仅使用完全限定的命令路径或命令名称时,什么也不会发生,如下所示:
user@machine ~ # /c/Windows/System32/NETSH
user@machine ~ #
(注意:在问题机器 N3 上,Cygwin 版本也比最新(实际)版本 CYGWIN_NT-10.0 - 3.1.4(0.340/5/3) x86_64 稍旧,结果是一样)
有没有人有想法?? 谢谢!!
学校
解决方法
问题在于 Mintty
之间的交互和 netsh
需要交互且不是 Cygwin 程序。详情见:
https://github.com/mintty/mintty/wiki/Tips#inputoutput-interaction-with-alien-programs
如果您使用 root 上的 netsh
在 Cygwin
下运行 Cygwin.bat
,则没有问题,因为终端与 CMD
$ netsh
netsh>interface
In zukünftigen Versionen von Windows wird die Netsh-Funktionalität
für TCP/IP von Microsoft entfernt.
..
Unter https://go.microsoft.com/fwlink/?LinkId=217627 finden Sie
weitere Informationen zu PowerShell-Befehlen für TCP/IP.
netsh interface>
netsh interface>quit
Mintty
下的解决方法是使用 winpty
作为中间
https://github.com/rprichard/winpty/releases
假设您使用的是 64 位系统:
$ wget https://github.com/rprichard/winpty/releases/download/0.4.3/winpty-0.4.3-cygwin-2.8.0-x64.tar.gz
$ tar -xf winpty-0.4.3-cygwin-2.8.0-x64.tar.gz
$ cp -r winpty-0.4.3-cygwin-2.8.0-x64/* /usr/local
$ winpty netsh
netsh>
,
我为我的问题找到了一种快速而简单的解决方法,但它对我来说效果很好。 (我的目标实际上是创建一个 shell 脚本来检查 /var/log/sshd.log 并查找最近几个月刚刚爆发的暴力攻击。然后这个脚本应该创建 Windows 防火墙规则来阻止这些 IP 号码时间。这就是我需要访问“netsh”的目的。)
我针对上述问题的解决方法:
我创建了另一个 shell 脚本
/usr/local/bin/netsh
有这个内容:
#!/bin/bash
exec /c/Windows/System32/CMD /c "C:\Windows\System32\NETSH $@"
当然这需要一个 PATH 变量,它具有
/usr/local/bin
作为第一个元素。
这样我(和我的脚本)可以透明地使用“netsh”工具。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。