批处理文件,用于检查远程服务器的特定端口的可用性

时间:2014-11-21 09:35:09

标签: windows batch-file connectivity

您好我正在尝试制作一个bat文件来检查从不同服务器到特定服务器的可用性,以检查它们之间是否存在某些防火墙,或阻止该锥形切割的内容。问题是我无法使用像portqry,nmap这样的第三方软件......所以我坚持到这里,每个提示都会有所帮助。

先谢谢XD,

1 个答案:

答案 0 :(得分:0)

手动,您可以使用telnet

echo.|telnet google.com 80

但是telnet输出不能处理,所以它对脚本没用。

这是一个或多或少作弊的解决方案(因为它创建.exe文件),但不是下载。 由于它包含十六进制字符串的二进制数据,它有点长,所以我不得不使用pastebin.com

另一种方式。使用jscript.net/batch hybrid(应保存为bat),这也会创建一个小的exe文件。但设置套接字连接超时不是那么简单的任务,所以如果端口不可用,它将等待太长时间:

@if (@X)==(@Y) @end /****** silent line that start jscript comment ******

@echo off
::::::::::::::::::::::::::::::::::::
:::       compile the script    ::::
::::::::::::::::::::::::::::::::::::
setlocal
::if exist portchk.exe goto :skip_compilation

set "frm=%SystemRoot%\Microsoft.NET\Framework\"
:: searching the latest installed .net framework
for /f "tokens=* delims=" %%v in ('dir /b /s /a:d /o:-n "%SystemRoot%\Microsoft.NET\Framework\v*"') do (
    if exist "%%v\jsc.exe" (
        rem :: the javascript.net compiler
        set "jsc=%%~dpsnfxv\jsc.exe"
        goto :break_loop
    )
)
echo jsc.exe not found && exit /b 0
:break_loop


%jsc% /nologo /out:"portchk.exe" "%~dpsfnx0"
::::::::::::::::::::::::::::::::::::
:::       end of compilation    ::::
::::::::::::::::::::::::::::::::::::
:skip_compilation

:: download the file


 ::::just change the link and the file::::
 portchk.exe google.com 80
 portchk.exe google.com 666


exit /b 0


****** end of jscript comment ******/

import System;
import System.Net.Sockets;
import System.Timers;

var arguments:String[] = Environment.GetCommandLineArgs();



var remote_host=arguments[1];
var remote_port=arguments[2];

//var ipa= (IPAddress) Dns.GetHostAddresses(remote_host)[0];

var sock=new System.Net.Sockets.Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

try {
    sock.Connect(remote_host, remote_port);
    //sock.ConnectAsync(remote_host, remote_port);
    timer_connection = new Timer();

    Console.WriteLine("connected to something");

}catch (e) {

    Console.WriteLine("Port is probably not available");
}