请教个实现开机后自动发Email报告IP的问题
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
- 帖子: 21
- 注册时间: 2007-02-03 18:13
请教个实现开机后自动发Email报告IP的问题
因为我所处的网络IP不固定,我想让电脑远程启动(重启)后,不需要用户登陆。
自动发送IP到我的信箱myemail@to.com, 以便我能通过SSH远程控制这台电脑。
发送邮件我用了SendEmail这个程序,我写了下面的脚本upip,
放在了\etc\init.d里, chmod +x upip。
这个脚本测试通过,我可以收到相关包含IP的email。
然后执行 sudo update-rc.d upip defaults 自动做启动和关闭的链接.
#!/bin/bash
ifconfig >$filename
sendEmail -f email@from.com \
-t myemail@to.com \
-s server.com \
-o message-file= $filename \
-u "Report of IP"
可能的问题是启动后没有权限生成文件$filename。 我想应该可以把ifconfig结果存为一个变量,
然后直接发送,不存文件,但还不知道如何实现。
为了测试这个脚本是否能直接启动, 我把只发了一封简单的信,
#!/bin/bash
sendEmail -f email@from.com \
-t myemail@to.com \
-s server.com \
-m "test" \
-u "Report of IP"
但是发现启动后也没有自动执行。
请大伙帮忙看看是哪里出了问题。 谢谢!
自动发送IP到我的信箱myemail@to.com, 以便我能通过SSH远程控制这台电脑。
发送邮件我用了SendEmail这个程序,我写了下面的脚本upip,
放在了\etc\init.d里, chmod +x upip。
这个脚本测试通过,我可以收到相关包含IP的email。
然后执行 sudo update-rc.d upip defaults 自动做启动和关闭的链接.
#!/bin/bash
ifconfig >$filename
sendEmail -f email@from.com \
-t myemail@to.com \
-s server.com \
-o message-file= $filename \
-u "Report of IP"
可能的问题是启动后没有权限生成文件$filename。 我想应该可以把ifconfig结果存为一个变量,
然后直接发送,不存文件,但还不知道如何实现。
为了测试这个脚本是否能直接启动, 我把只发了一封简单的信,
#!/bin/bash
sendEmail -f email@from.com \
-t myemail@to.com \
-s server.com \
-m "test" \
-u "Report of IP"
但是发现启动后也没有自动执行。
请大伙帮忙看看是哪里出了问题。 谢谢!
-
- 帖子: 21
- 注册时间: 2007-02-03 18:13
ifconfig我发现没有问题,是可以取得(实)IP的。eexpress 写了:ifconfig的不能认局域网的外网ip。可以取得。代码: 全选
w3m -no-cookie -dump www.ip138.com|grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"
保存文件可以指定路径,就不会有权限问题。
既然是email。email的头信息,解析出来也可以直接看到发送的ip吧。
脚本执行,直接加到/etc/rc2.d/里面。加到S40网络启动以后的位置,试试。
我把文件保存为 /tmp/ip.txt 这样可以吗? 启动的时候执行权限是su吗?
似乎最重要的问题还是这个脚本没有执行。
执行 sudo update-rc.d upip defaults 的结果是
Adding system startup for /etc/init.d/upip.sh ...
/etc/rc0.d/K20upip.sh -> ../init.d/upip.sh
/etc/rc1.d/K20upip.sh -> ../init.d/upip.sh
/etc/rc6.d/K20upip.sh -> ../init.d/upip.sh
/etc/rc2.d/S20upip.sh -> ../init.d/upip.sh
/etc/rc3.d/S20upip.sh -> ../init.d/upip.sh
/etc/rc4.d/S20upip.sh -> ../init.d/upip.sh
/etc/rc5.d/S20upip.sh -> ../init.d/upip.sh
我改到S40以后再试试。 多谢了。
-
- 帖子: 21
- 注册时间: 2007-02-03 18:13
- Jackay
- 帖子: 78
- 注册时间: 2006-11-29 14:25
- 联系:
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
email导出成mbs等格式。反正是文本的了。不过只能看到发送的服务器ip。还是你把ip加到邮件算了。
Received: from www.3322.org (unknown [61.177.95.125])
by mx7 (Coremail) with SMTP id wKjAO7D7L9YmiaNFQ9p8Lw==.16860S2;
Tue, 09 Jan 2007 20:23:02 +0800 (CST)
● 鸣学
- jarlyyn
- 帖子: 4671
- 注册时间: 2006-04-12 18:54
- 联系:
-
- 帖子: 21
- 注册时间: 2007-02-03 18:13
- 5451vs5451
- 帖子: 345
- 注册时间: 2006-07-14 18:56
- 来自: Apple Valley, Planet Tux, Linux System
如果你的ip经常变的话,最好把ipup放到crontab里去,而不是仅开机的时候执行一次。
比如,在内网的机器上运行:
在ekiga下就可以收到这条消息(见下图)。我是在本机上运行sipsak的,所以后面的地址是127.0.0.1,不然的话应该可以看到公网ip的。
可以用ekiga啊,系统默认就装好了。再装个sipsak(只有147k)就能发消息了。comtex 写了:或者有没有更好的办法实现这个功能?
多谢!
比如,在内网的机器上运行:
代码: 全选
~$ sipsak -s sip:85451@ekiga.net -M -B "hello"
warning: ignoring -i option when in usrloc mode
timeout after 500 ms
biggest delay between request and response was 942.169 ms
1 time(s) the timeout of 500 ms exceeded and request was retransmitted.
-
- 帖子: 21
- 注册时间: 2007-02-03 18:13
我的IP是每次开机的时候才有可能变,是不是就不用放到crontab了?5451vs5451 写了:如果你的ip经常变的话,最好把ipup放到crontab里去,而不是仅开机的时候执行一次。可以用ekiga啊,系统默认就装好了。再装个sipsak(只有147k)就能发消息了。comtex 写了:或者有没有更好的办法实现这个功能?
多谢!
比如,在内网的机器上运行:在ekiga下就可以收到这条消息(见下图)。我是在本机上运行sipsak的,所以后面的地址是127.0.0.1,不然的话应该可以看到公网ip的。代码: 全选
~$ sipsak -s sip:85451@ekiga.net -M -B "hello" warning: ignoring -i option when in usrloc mode timeout after 500 ms biggest delay between request and response was 942.169 ms 1 time(s) the timeout of 500 ms exceeded and request was retransmitted.
看起来ekiga不错,多谢多谢!
之前的email没有发送成功问题是因为我把sendEmail装在自己的账号下,启动的时候似乎没有权限执行,或者是找不到, 我重新装在了/usr/local/bin/sendEmail ,并指定了路径就可以了。在同事的帮助下,我又把原来的方法改了一下,不用存文件,直接从ipconfig的结果中提取并发送ip信息。完整脚本如下:
#!/bin/bash
ipinfo=`/sbin/ifconfig | grep 'inet addr:'| grep -v '127.0.0.1 ' | cut -d: -f2 | awk '{ print $1}'`
#echo $ipinfo
/usr/local/bin/sendEmail -f name@send.com \
-t name@to.com \
-s mailserver\
-u "Report of my IP:"$ipinfo
-m "anything"
-
- 帖子: 4
- 注册时间: 2010-10-16 10:27
Re: 请教个实现开机后自动发Email报告IP的问题
我主脚本实现是先用ifconfig获取ip信息存在一文件下,再用sendmail程序发邮件。具体把主脚本链接放在rc2.d的S99级别上,sendmail脚本在/usr/local/bin/下, 临时文件存在/tmp/下。comtex 写了:我的IP是每次开机的时候才有可能变,是不是就不用放到crontab了?5451vs5451 写了:如果你的ip经常变的话,最好把ipup放到crontab里去,而不是仅开机的时候执行一次。可以用ekiga啊,系统默认就装好了。再装个sipsak(只有147k)就能发消息了。comtex 写了:或者有没有更好的办法实现这个功能?
多谢!
比如,在内网的机器上运行:在ekiga下就可以收到这条消息(见下图)。我是在本机上运行sipsak的,所以后面的地址是127.0.0.1,不然的话应该可以看到公网ip的。代码: 全选
~$ sipsak -s sip:85451@ekiga.net -M -B "hello" warning: ignoring -i option when in usrloc mode timeout after 500 ms biggest delay between request and response was 942.169 ms 1 time(s) the timeout of 500 ms exceeded and request was retransmitted.
看起来ekiga不错,多谢多谢!
之前的email没有发送成功问题是因为我把sendEmail装在自己的账号下,启动的时候似乎没有权限执行,或者是找不到, 我重新装在了/usr/local/bin/sendEmail ,并指定了路径就可以了。在同事的帮助下,我又把原来的方法改了一下,不用存文件,直接从ipconfig的结果中提取并发送ip信息。完整脚本如下:
#!/bin/bash
ipinfo=`/sbin/ifconfig | grep 'inet addr:'| grep -v '127.0.0.1 ' | cut -d: -f2 | awk '{ print $1}'`
#echo $ipinfo
/usr/local/bin/sendEmail -f <!-- e --><a href="mailto:name@send.com">name@send.com</a><!-- e --> \
-t <!-- e --><a href="mailto:name@to.com">name@to.com</a><!-- e --> \
-s mailserver\
-u "Report of my IP:"$ipinfo
-m "anything"
问题1. ifconfig获取到的信息没有实际ip的信息,如下:
eth0 Link encap:Ethernet HWaddr 00:23:5a:6d:df:02
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:17
而进入系统后才会有实际的ip, 这是什么原因呢,难道网络配置在rc2.d之后才进行?
问题2. sendmail 并没有工作, 我猜想是没有实际的ip所以邮件发送失败
ps: 系统是10.04版本