- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有400个路由器,大约。通过使用控制台,我可以通过 telnet 访问它们中的每一个,通过键入一系列命令,我可以生成备份并使用 FTP 将其复制到我的计算机上。
我想自动化这个任务,因为它真的很烦人。
我已经在互联网上阅读了有关该主题的所有内容。
我知道用 C 编程,我正在使用 Windows。因此,我阅读了有关 WINSOCK 和套接字的所有信息,并且正在尝试实现我的程序。
我有这个问题,当我使用 recv
功能它一直向我显示奇怪的字符,我不知道这意味着什么以及如何解决它,我什至不知道我正在尝试做的事情是否可以仅使用套接字和 C。
如果有可能你能告诉我如何以这种方式发送我的命令,或者向我指出一个向我展示如何执行此操作的文档的方式。
这是我的代码的基础,我怀疑我应该学习如何在 c 中协商 telnet
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib, "Ws2_32.lib")
#pragma comment(lib, "wsock32.lib")
#pragma comment(lib, "libws2_32.lib")
#pragma comment (lib, "Mswsock.lib")
#pragma comment (lib, "AdvApi32.lib")
int main ()
{
const char direcciones[400]="xx.x.x.xx";
WSADATA wsaData;
SOCKET sock;
struct hostent *host;
struct sockaddr_in direc;
int conex;
int len;
char *sendbuf1="USER admin\n\r";
char *sendbuf2="PASS \n\r";
char *sendbuf3="\n\r";
char *sendbuf4="export file=";
char recvbuf[512];
int cont;
// Initialize Winsock
WSAStartup(MAKEWORD(2,2), &wsaData);
conex = WSAStartup(MAKEWORD(2,2), &wsaData);
if (conex != 0)
{
printf("WSAStartup failed: %d\n", conex);
return 1;
}
host=gethostbyaddr(&direcciones[0],4,AF_INET);
printf("\tOfficial address: %s\n", host->h_addr);
system("pause");
sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (sock==-1)
{
printf("error al crear el socket\n");
return(-1);
}
direc.sin_family=AF_INET;
direc.sin_port=htons(23);
direc.sin_addr=*((struct in_addr*)host->h_addr);
memset(direc.sin_zero,0,8);
conex = connect(sock,(SOCKADDR *) & direc,sizeof(direc));
if (conex==SOCKET_ERROR)
{
printf("no se ha podido conectar con el servidor\n");
conex = closesocket(sock);
if (conex == SOCKET_ERROR)
wprintf(L"closesocket function failed with error: %ld\n", WSAGetLastError());
WSACleanup();
return 1;
}
else printf("coneccion correcta a puerto telnet\n");
system("pause"); //esto hay que quitarlo despues
conex = recv(sock,recvbuf,512, 0);
printf("se recibio %i bytes\n",conex);
printf("dato recibido: %s\n",&recvbuf);
conex = send( sock, sendbuf1,strlen(sendbuf1), 0 );
conex = recv(sock,recvbuf,512, 0);
printf("se recibio %i bytes\n",conex);
printf("dato recibido: %s\n",&recvbuf);
conex = closesocket(sock);
if(conex==SOCKET_ERROR)
{
wprintf(L"funcion closesocket fallo con error: %ld\n", WSAGetLastError());
WSACleanup();
return 1;
}
WSACleanup();
return 0;
}
最佳答案
您需要处理 telnet 协商。
在 netcat 中有一个小实现(我指的是 Hobbit 的许可版本,而不是 GNU 的),它被描述为“回答任何看起来像 telnet 协商的事情不要/不会”。您可能可以从中学习,尽管需要几分钟才能弄清楚它是如何工作的以及与其余代码的接口(interface)。
您还可以从脚本中使用 netcat 或从 C 程序将其作为外部进程启动。
就此而言,在 BSD 许可下找到一个 telnet 客户端应该不难,您可以通过满足相当温和的合规性要求从中借用代码。这可能是一个更复杂的程序,但它可能有更清晰的内部抽象。
关于c - 使用 c 的 telnet 客户端,用于自动备份一系列路由器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6915371/
我一直在尝试创建一个 expect 脚本来通过 telnet 自动登录到我的设备 如果expect 命令没有多种可能性,则脚本可以正常工作,登录设备。 #!/usr/bin/expect set ti
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
据我了解,Telnet 与 HTTP 一样都是一种协议(protocol)。我有这样的想法,在建立初始 TCP 连接后,Telnet 客户端会将一些 telnet 特定代码发送到另一端的服务器(在本例
我正在尝试使用 C++ 和 QT 作为 GUI 来实现 Telnet 客户端。我不知道如何处理 telnet 协商。每个 telnet 命令都以 IAC 开头,例如 IAC WILL SUPPRESS
我需要在 telnet 中进行大量测试。我正在研究一些方法来自动检测我们电子邮件服务器上的字典攻击,然后限制它们,或将它们列入黑名单等。 我现在准备运行一些测试,看看我的工作是否有返回。我想我只需下载
看来您应该能够使用 telnet 手动进行 json-rpc 调用。但是,当我尝试这样做时,服务器根本没有任何响应,我不得不关闭 telnet 客户端。我是否需要发送 header 和/或以某种方式表
看来您应该能够使用 telnet 手动进行 json-rpc 调用。但是,当我尝试这样做时,服务器根本没有任何响应,我不得不关闭 telnet 客户端。我是否需要发送 header 和/或以某种方式表
我正在使用来自 busy-box 的 Telnet 客户端。我需要与 telnet 服务器创建一个 session ,但需要根据特定条件从 C 代码创建 session ,一旦创建 session ,
我需要发出 telnet close 命令,通常,^] (Ctrl-]) 应该可以工作。(找不到任何 emacs 特定的 telnet 文档) 我怎样才能得到 telnet>当我在 emacs 中使用
几天前我买了一个新的 MTS Wi-Fi Dongle,今天在使用它时,我使用我的 Android 设备在 192.168.1.1 上进行了端口扫描,令人惊讶的是端口 23(telnet)是开放的。输
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我有一个项目要做,它是这样的: 当您打开一个 telnet 控制台并 telnet 到我的服务器时,PHP 应该响应:“你好,你叫什么名字?” 然后你输入你的名字等等。我怎样才能在 PHP 中做到这一
是否可以通过 telnet 连接到服务器并从那里 telnet 到 python 中的另一台服务器?由于有一个 Controller ,我使用用户名和密码远程登录,并且从 Controller 命令行
我选择了一个用 C 编写 Telnet 服务器和 Telnet 客户端代码的项目。我正在学习 C 编程。 有没有人尝试过这个。请告诉我如何进行以及要引用的 Material 。抱歉询问源代码。我不知道
我需要编写一个在 Windows 上运行的 Perl 脚本,以通过远程登录到 Linux 机器来不断监视 Linux 机器下的日志文件以寻找模式。但问题是,Linux 机器非常频繁地重新启动(通过一些
我是 python 新手,我正在编写一个脚本来在某些情况下“telenet”设备 IP,如果 telnet 失败则编写 SSH username@deviceIp.. 对于所有 Telnet IP,它
我正在使用 org.apache.commons.net.telnet 库与我的 Telnet 服务器建立连接,该服务器的实现与标准 RFC 854 略有不同,但没什么太可怕的。 实际上,我建立到此远
我正在使用 org.apache.commons.net.telnet 库与我的 Telnet 服务器建立连接,该服务器的实现与标准 RFC 854 略有不同,但没什么太可怕的。 实际上,我建立到此远
我的要求是从 Node js连接到Telnet客户端。 我正在使用 telnet-client包裹 我正在使用此代码进行连接 var Telnet = require('telnet-client')
我需要一个 expect 脚本来等待发出的命令完成,然后从 telnet 注销。这是脚本: spawn telnet host send "username\r" send "password\r"
我是一名优秀的程序员,十分优秀!