当前位置:  开发笔记 > 编程语言 > 正文

我的剧本有什么问题,请告诉我

如何解决《我的剧本有什么问题,请告诉我》经验,为你挑选了1个好方法。

我需要在我的路由器上输入scipt并查找代码并与之前记录的此IP信息进行比较,如果没有更改,则停止脚本.

我运行这个脚本 - $ perl~/test.pl

没有错误,但是没有创建文件my_ip.txt.

在原件脚本必须通过主机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 = ;
  $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)
}

不要因为连接到路由器的问题而带来代码的结尾



1> mob..:
$ perl -cw -e 'print `addr admin:foo@192.168.1.1/bar`'
Possible unintended interpolation of @192 in string at -e line 1.
-e syntax OK

它不起作用,因为@192插值为数组,并且您正在运行命令addr admin:Tavolzhansky.168.1.1/RST_conn_status.htm而不是您想要的命令.

use warnings如果您愿意使用调试器逐步执行代码,或者正如Andy建议的那样,如果您要检查返回值,那么很容易发现并修复.


为了@192不被插值,逃避@:

my $routeraddress = `addr admin:Tavolzhansky\@192.168.1.1/RST_conn_status.htm`;

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有