Curl 更改后将ip地址发送到我的电子邮件
我正在我的办公室机器上远程工作,我希望在更改时收到一封带有新ip地址的电子邮件。我曾经说过,我可以使用Curl 更改后将ip地址发送到我的电子邮件,curl,ip-address,sendmail,remote-access,Curl,Ip Address,Sendmail,Remote Access,我正在我的办公室机器上远程工作,我希望在更改时收到一封带有新ip地址的电子邮件。我曾经说过,我可以使用curl来实现这一点,但我找不到任何关于如何实现这一点的信息 你需要的不仅仅是卷曲 您当然可以使用curl来抓取https://www.whatismyip.com,但您需要某种脚本语言(或编译语言)来解析它,提取IP地址,然后检查它是否不同。如果您希望使用bash,可以安装mailutils apt-get install mailutils 然后获取ifconfig数据并使用它发送。 这里
curl
来实现这一点,但我找不到任何关于如何实现这一点的信息 你需要的不仅仅是卷曲
您当然可以使用curl来抓取
https://www.whatismyip.com
,但您需要某种脚本语言(或编译语言)来解析它,提取IP地址,然后检查它是否不同。如果您希望使用bash,可以安装mailutils
apt-get install mailutils
然后获取ifconfig数据并使用它发送。
这里有一个教程
在Python中,您可以按照以下思路进行操作:
import socket
import smtplib
from email.mime.text import MIMEText
email_from = "script@email.com"
email_to = "youremail@email.com"
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("google.com", 80))
ipaddress = s.getsockname()[0]
s.close()
msg = MIMEText(ipaddress)
msg['Subject'] = 'Your current IP ADDRESS %s' % ipaddress
msg['From'] = email_from
msg['To'] = email_to
s = smtplib.SMTP('localhost')
s.sendmail(email_from, [email_to], msg.as_string())
s.quit()
在PHP中:
<?php
$message = "Current IP ADDRESS: " . get_ip();
$email_to = "youremail@email.com";
mail($email_to, $message, $message);
function get_ip($destination='64.0.0.0', $port=80)
{
$s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_connect($s, $destination, $port);
socket_getsockname($s, $ipaddress, $port);
socket_close($s);
return $ipaddress;
}
?>
然后,只需crontab它,或者将其包装为True,创建全局_变量,并使用脚本开始时的当前ip地址,如果与当前ip不匹配,则发送邮件。
遗憾的是,如果您的PC有多个ip,PHP的$u服务器[]变量就会出现问题。在这种情况下,这是一个解决办法
编辑:PHP中的其他方式
<?php
require('simple_html_dom.php');
$html = file_get_html('http://whatismyipaddress.com/');
foreach($html->find('a') as $element){
if(preg_match('/\/\/whatismyipaddress.com\/ip\/(.*)/', $element->href, $match))
$ipaddress = $match[1];
}
$email_to = "youremail@email.com";
$message = "Current IP ADDRESS: " . $ipaddress;
mail($email_to, $message, $message)
?>
你需要使用它。
另外,使用https页面需要在php.ini中进行更改,因此我将该页面更改为google为我找到的第一个页面whatismyipaddress.com。如果我要每天运行.sh脚本,我必须将其插入bash文件吗?是的。。。除了编写所有支持代码以提取IP并检查其是否更改之外。您可能会发现Python或Ruby之类的东西更容易,因为它们有用于抓取和解析网页的库,而Bash没有。问题是OP很可能位于NAT防火墙后面。在这种情况下,IP将永远不会出现在盒子上。至少,我是这样读这个问题的。编辑了我的答案并添加了使用DOM遍历解析器的方法。我对NAT没有太多的经验,但是如果curl可以工作,那么这个也应该可以。