Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP和telnet的SMTP服务器可用性_Php_Bash_Smtp_Telnet - Fatal编程技术网

使用PHP和telnet的SMTP服务器可用性

使用PHP和telnet的SMTP服务器可用性,php,bash,smtp,telnet,Php,Bash,Smtp,Telnet,我的公司正在租赁大量的知识产权。我们的客户大多是邮递员。在IP租赁之后,有时他们会使IP无法使用,因为IP在某些提供商(如Yahoo、Gmail、AOL等)被屏蔽 目前,我们通过绑定IP并从CentOS系统运行telnet命令来进行简单检查,如下所示: telnet -b $IP smtp.gmail.com 25 如果是220表示OK,或者其他表示IP不是脏的东西,则获取输出 我要找的是一个PHP脚本,或者首先是如何实现这一点的想法。 基本上,我们会绑定IP,例如PHP会检查连接的输出并写入

我的公司正在租赁大量的知识产权。我们的客户大多是邮递员。在IP租赁之后,有时他们会使IP无法使用,因为IP在某些提供商(如Yahoo、Gmail、AOL等)被屏蔽

目前,我们通过绑定IP并从CentOS系统运行
telnet
命令来进行简单检查,如下所示:

telnet -b $IP smtp.gmail.com 25
如果是220表示OK,或者其他表示IP不是脏的东西,则获取输出

我要找的是一个PHP脚本,或者首先是如何实现这一点的想法。 基本上,我们会绑定IP,例如PHP会检查连接的输出并写入csv文件

我过去做过很多php项目,但没有类似的。你知道从哪里开始吗? 谢谢你的建议

编辑

经过我的调查,我可以做这样的事情

    $eol= system("nc  -4 -w 2 -s $Binded_IP smtp.gmail.com 25", $output );
var_dump($output); 
并得到如下输出:

-bash-4.2$ php script.php 

220 smtp.gmail.com ESMTP 13sm2795405wml.25 - gsmtp
我正在尝试使用
netcat
而不是telnet。对于那些不熟悉netcat的人来说,这就是这些论点的意义:

-4 to bind only IPv4
-s Source IP to bind to
-w 2  Timeout

但问题是我无法找到一种方法来关闭这个连接,它只是挂起,并保持开放。如果我找到关闭该连接的方法,我可以在文件中存储$output,过滤SMTP状态代码,然后继续使用第二个IP并进行检查。

您可以使用以下脚本检查是否存在到服务器的连接

$f = fsockopen('smtp smtp.gmail.com', 25) ;
if ($f !== false) {
    $res = fread($f, 1024) ;
    if (strlen($res) > 0 && strpos($res, '220') === 0) {
        echo "Success!" ;
    }
    else {
        echo "Error: " . $res ;
    }
}
fclose($f) ;

你不能通过PHPs exec()运行这个吗?或者,也许更好,只需编写一个通过ip在文本文件或其他文件中运行的bash脚本?@junkfoodjunkie是的,我也考虑过bash,但遇到了如何终止和获取现有连接的输出的问题。这个脚本应该有帮助是的,但它将通过主ip发送请求,而不是绑定的ip。服务器的主IP是
192.168.1.1
,我想测试
10.0.0.0/24
子网。因此,我将把`10.0.0.0/24绑定到我的接口,然后我将使用这些IP来执行请求。Ofc,这些都是私有IP,我只是举了个例子。试试这个,我想这会很有用