【发布时间】:2016-03-09 18:46:23
【问题描述】:
我需要那个scipt在我的路由器页面上输入并找到代码并与之前记录的这个IP信息进行比较,如果没有更改,则停止脚本。
我运行这个脚本 - $ perl ~/test.pl
没有错误,但未创建文件 my_ip.txt。
in originals script 必须通过主机 example.dyndns.org 检查我的 ip,但我的 ip 是灰色的。
所以我需要通过路由器来确定
#!/usr/bin/perl
use LWP::UserAgent;
my $routeraddress = `addr admin:Tavolzhansky@192.168.1.1/RST_conn_status.htm`;
if ($routeraddress =~ /var info_get_wanip="((\d+\.){3}(\d+))"/) {
my $ip = "$1.$2.$3.$4";
#Добавлено:
open (FILE,"my_ip.txt");
my @lines = <FILE>;
$old_ip = $lines[0]; #Считываем IP из файла
$old_ip =~ s/^\s+|\s+$//g; #trim
close(FILE);
if ($old_ip eq $ip) {
die "IP not changed"; # Выходим из скрипта, если IP не изменился
}
open (FILE,">my_ip.txt");
print FILE $ip; # Записываем в файл новый IP
close(FILE);
...... (this code is OK)
}
不要把代码结束因为连接路由器的问题
【问题讨论】:
-
开启
use strict;use warnings;和use autodie;- 如果您的open失败,后者将生成错误。猜测一下,权限被拒绝。 -
使用严格;没有帮助。 old_ip 与原始版本一样出错,但它在原始版本中有效
-
addr命令返回什么? -
请不要将所有
perl代码的Q 标记为bash。祝你好运。