怎么实现C# 调用 cmd telnet 但不显示telnet窗口

良言 2014-06-20 11:07:18
我想完成自动telnet到服务器并执行一个命令,并返回执行状态
看了好多帖子,现在采用了以process调用bat批处理文件的方式
bat又会去调用vbs去做登陆和执行命令。
但这种方式下 telnet.exe 的输出框会弹出来,这个能实现不展示提示框吗?
我看网上有人说用API实现了,但没具体说,请问有人知道吗

在线等,谢谢

问题:
1.怎么样执行telnet时不显示窗口
2. 用process的StandardOutput貌似只能得到cmd.exe的输出,调telnet以后,貌似就得不到输出了。
怎么获得telnet的输出或者执行状态之类的东东,只能监控输出的日志C:\213.log吗?

bat文件;
start telnet.exe -f C:\213.log
cscript //nologo tel.vbs

tel.vbs
01.set sh=WScript.CreateObject("WScript.Shell")
02.WScript.Sleep 1000
03.'向telnet发送我们平时录入的命令
04.sh.SendKeys "open 127.0.0.1"
05.WScript.Sleep 1000
06.sh.SendKeys "{ENTER}"
07.WScript.Sleep 1000
08.sh.SendKeys "password{ENTER}"
09.WScript.Sleep 1000
10.sh.SendKeys "administrator{ENTER}"
11.WScript.Sleep 1000
12.sh.SendKeys "pwd1234{ENTER}"
13.WScript.Sleep 1000
14.'运行命令
15.sh.SendKeys "VMSTAT{ENTER}"
...全文
704 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2014-06-23
  • 打赏
  • 举报
回复
因为telnet是单独一个程序啊.
你运行CMD,然后CMD开启了另一个程序,你可以设置CMD自身隐藏,但是CMD开启的另一个程序,你的程序就不能直接控制了.
不知道在CMD里执行TELNET的时候有没有参数可以使它隐藏的.应该是没有..
良言 2014-06-23
  • 打赏
  • 举报
回复
引用 1 楼 Z65443344 的回复:
问题1:执行bat就必然会弹出窗口,这个没办法的. 问题2:Process就是在调用CMD程序,它只能执行CMD中的方法,并返回CMD中能看到的结果 而执行telnet的时候其实已经跳出了CMD程序,在新窗口打开了telnet程序. 不知道超级终端是如何调用telnet的,反正肯定不是控制台. 猜想应该是socket直连的吧,telnet端口号是23,直接用socket发数据应该是可行的.
用socket可以。 网上找了段代码,可以实现登陆和执行简单的命令。 http://blog.csdn.net/mevin/article/details/7181560 但是不知道怎么获取“持续命令”的输出。 比如我想登陆到数据库服务器,执行expdp命令导出dmp包。 执行没问题,dmp包可以正常导出,但是想获取expdp的输出貌似不行
良言 2014-06-23
  • 打赏
  • 举报
回复
引用 2 楼 songhtao 的回复:
C#中调用ping命令怎么隐藏CMD的窗口 private void button1_Click(object sender, EventArgs e) { try { Process proc = new Process(); proc.StartInfo.FileName = "ping.exe"; proc.StartInfo.Arguments = "192.168.0.1"; proc.StartInfo.UseShellExecute = false; proc.StartInfo.CreateNoWindow = false; proc.StartInfo.RedirectStandardOutput = true; proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; proc.Start(); string output = proc.StandardOutput.ReadToEnd(); StreamWriter sw = new StreamWriter("c:/ping.txt"); sw.Write(output); sw.Close(); // MessageBox.Show(output); // MessageBox.Show((proc.ExitCode).ToString()); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } 这样运行后,回弹出CMD的窗口,怎么隐藏? ------解决方案-------------------- C# code ………… p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = true;
这样不行吧。cmd可以隐藏,但是telnet窗口是藏不了的。
於黾 2014-06-20
  • 打赏
  • 举报
回复
我新建个socket,然后连接到telnet的端口 直接读取内容 内容为: FFFB01 FFFB03 FFFD18 FFFD1F 这应该就是连接成功了. 只是不知道代码的含义.
我不懂电脑 2014-06-20
  • 打赏
  • 举报
回复
C#中调用ping命令怎么隐藏CMD的窗口 private void button1_Click(object sender, EventArgs e) { try { Process proc = new Process(); proc.StartInfo.FileName = "ping.exe"; proc.StartInfo.Arguments = "192.168.0.1"; proc.StartInfo.UseShellExecute = false; proc.StartInfo.CreateNoWindow = false; proc.StartInfo.RedirectStandardOutput = true; proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; proc.Start(); string output = proc.StandardOutput.ReadToEnd(); StreamWriter sw = new StreamWriter("c:/ping.txt"); sw.Write(output); sw.Close(); // MessageBox.Show(output); // MessageBox.Show((proc.ExitCode).ToString()); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } 这样运行后,回弹出CMD的窗口,怎么隐藏? ------解决方案-------------------- C# code ………… p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = true;
於黾 2014-06-20
  • 打赏
  • 举报
回复
问题1:执行bat就必然会弹出窗口,这个没办法的. 问题2:Process就是在调用CMD程序,它只能执行CMD中的方法,并返回CMD中能看到的结果 而执行telnet的时候其实已经跳出了CMD程序,在新窗口打开了telnet程序. 不知道超级终端是如何调用telnet的,反正肯定不是控制台. 猜想应该是socket直连的吧,telnet端口号是23,直接用socket发数据应该是可行的.

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧