phptelnet.php,与PHP Telnet - 它适用于回声?

require_once "PHPTelnet.php";

$telnet = new PHPTelnet();

$telnet->show_connect_error=0;

$result = $telnet->Connect('192.168.0.1','username','password');

switch ($result) {

case 0:

$telnet->DoCommand('sys ddns display', $result);

echo $result;

$telnet->DoCommand('exit', $exit);

echo $exit;

$telnet->Disconnect();

break;

它的工作原理。当我回显$结果我可以看到许多设置像这样:

sys ddns display DDNS Status state = 0,flags = 1 pauseTime = 0,timerID = 0 startcnt = 2,stopcnt = 1 retrycnt = 0,eventqcnt = 0 socketID = -1 DomainName =电子邮件地址=更新IP = XXX.XXX.XXX.XXX更新时间= 00:00:00星期四1970年1月1日RETCODE =好

因为我只得到XXX.XXX.XXX.XXX(WAN IP)intrested我做的preg_match从$结果得到IP地址。问题来了。我总是得到这个错误:

Undefined offset: 1

基本上这意味着preg_match找不到任何匹配。我使用此代码来匹配IP:

$regex = '/\IP = ([^\"]*?)\ /';

preg_match($regex, $result, $matches);

它正确匹配IP。事实上,如果我尝试这样的事情,它的作品。

$result = "sys ddns display DDNS Status state = 0, flags = 1 pauseTime = 0, timerID = 0 startcnt = 2, stopcnt = 1 retrycnt = 0, eventqcnt = 0 socketID = -1 DomainName = eMail Address = update IP = XXX.XXX.XXX.XXX update time = 00:00:00 Thu. Jan. 01, 1970 retCode = good tc> ";

$regex = '/\IP = ([^\"]*?)\ /';

preg_match($regex, $result, $matches);

print_r($matches);

这个问题似乎直接从$ telnet-> DoCommand( 'SYS DDNS显示',$结果)附带的$结果;只能回显但不能用作字符串。为什么?这是什么意思?我怎样才能真正获得Telnet响应作为真正的变量?

+0

首先在'[^ \“]'似乎没有任何裸露相关性要搜索的数据(没有双引号你展示字符串中的任何,这样就匹配任何东西),其次,正则表达式中的主要反斜杠也没有意义(没有什么可以逃脱),第三,这似乎是一个不必要的复杂方式来找到你的公共IP,当你可以使用像http://whatismyipaddress.com/api(有很多免费提供相同功能的服务) –

+0

我知道正则表达式制作得不好,我只是为了测试目的而回收它,只是为了快速理解脚本是否真的可以工作。无论如何,大声笑我知道如何获得我的公共IP地址:D我做的是一个更复杂的事情,我有一个家庭服务器在动态ip下,每60个secon ds通过telnet脚本获取当前的公共IP地址,如果通过API更改,它还会更新我与注册商的真实域的A记录。通过这种方式,我总是可以通过访问home.mydomain.com访问我的家庭服务器,我的所有PC甚至手机。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值