1 (изменено: BlackRay, 2012-09-18 08:58:23)

Тема: OFF: Проверка состояния портов удаленного компьютера

задача состоит в том что бы автоматизировать проспотр порта на удаленном компьютере. пробовал следующий код:

Set WshShell = CreateObject("WScript.Shell")
Set ECode = WshShell.exec("telnet.exe 85.254.12.12 25565")
WScript.Sleep 2000
MsgBox ECode.ExitCode

но у меня не получается записать в переменную ExitCode выполнения программы.

сразу говорю что это не для взлома сервера, а для доброго дела

2

Re: OFF: Проверка состояния портов удаленного компьютера

telnet.exe устанавливает код возврата для команды?

3

Re: OFF: Проверка состояния портов удаленного компьютера

не знаю. вот по этому и создал тему. вдруг помогут

4

Re: OFF: Проверка состояния портов удаленного компьютера

А нельзя использовать что-нибудь с возможностью вызова WinAPI, например AHK или сторонний экзешник?

5

Re: OFF: Проверка состояния портов удаленного компьютера

можно. просто у меня пока плохо получается писать скриптовые оболочки для екзешников

6 (изменено: Александр_, 2012-09-18 16:21:19)

Re: OFF: Проверка состояния портов удаленного компьютера

BlackRay пишет:

можно. просто у меня пока плохо получается писать скриптовые оболочки для екзешников

В приложении исполняемый файл вот с таким исходным кодом(Visual C):

#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include <WinSock2.h>
#include <stdio.h>
#pragma comment(lib, "Ws2_32.lib")

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	WSADATA wsaData;
	sockaddr_in service;
	SOCKET Socket;
	DWORD ip[5] = {0};
	if(WSAStartup(MAKEWORD(2, 2), &wsaData))
	{
		WSACleanup();
		return -2;
	}
	Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	sscanf(lpCmdLine, "%u.%u.%u.%u:%u", ip, ip+1, ip+2, ip+3, ip+4);
	service.sin_family = AF_INET;
	service.sin_addr.S_un.S_un_b.s_b1 = (BYTE)ip[0];
	service.sin_addr.S_un.S_un_b.s_b2 = (BYTE)ip[1];
	service.sin_addr.S_un.S_un_b.s_b3 = (BYTE)ip[2];
	service.sin_addr.S_un.S_un_b.s_b4 = (BYTE)ip[3];
	service.sin_port = htons((WORD)ip[4]);
	if(connect(Socket, (SOCKADDR *)&service, sizeof(service))==SOCKET_ERROR)
	{
		WSACleanup();
		int err = WSAGetLastError();
		if(!err)
			return -1;
		return err;
	}
	closesocket(Socket);
	WSACleanup();
	return 0;
}

Пример использования скриптом:

Set WshShell = CreateObject("WScript.Shell")
MsgBox WshShell.Run("temp.exe 85.254.12.12:25565", 0, 1)

Должен возвращать -1 если порт закрыт и 0 если открыт. любое другое значение говорит о том, что проверка не удалась.

Post's attachments

temp.zip 3.45 kb, 4 downloads since 2012-09-18 

You don't have the permssions to download the attachments of this post.

7

Re: OFF: Проверка состояния портов удаленного компьютера

В дистрибутивы Windows входит Support Tools, где есть portqry.exe

MsgBox WshShell.Run("portqry.exe -n pop.mail.ru -e 110 -q", 0, True)
Я конечно далек от мысли... (с)

8

Re: OFF: Проверка состояния портов удаленного компьютера

спасибо большое. даже не ожидал что так быстро помогут )

9 (изменено: BlackRay, 2012-09-19 09:40:58)

Re: OFF: Проверка состояния портов удаленного компьютера

извините за тупой вопрос, но все же. где скачать визуал С? поисковик выдает только С++ и С#

10

Re: OFF: Проверка состояния портов удаленного компьютера

1. Один вопрос — одна тема.
2. См. Правила форума, п.2.9.