首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行中的Grep Wvdial输出

运行中的Grep Wvdial输出
EN

Unix & Linux用户
提问于 2013-11-13 10:48:13
回答 1查看 984关注 0票数 1

我想在grep运行wvdial时从wvdial中获取输出。实际上,我想在调制解调器连接时启动一个任务。

我想这样做:grep字符串"IP地址“,如果它是可用的,它意味着调制解调器被连接,然后触发另一个外壳脚本来执行另一个任务。

如何才能使之成为可能?

EN

回答 1

Unix & Linux用户

发布于 2013-11-13 11:17:27

严格地说,答案是:

许多程序,当管道在某处,缓冲他们的输出-他们写多行一次。这会提高性能,但当然会中断grep输出的尝试。GNU包括一个实用程序stdbuf,它经常允许您更改这一点。您可能希望将stdout或stderr更改为行缓冲。这可能会奏效,但可能不是最好的解决办法。

--更好的方法:

如果您查看/etc/ppp,您将看到那里有几个脚本,包括/etc/ppp/ip-up。当PPP链接出现时,pppd运行该脚本。至少在Debian上,该脚本运行/etc/ppp/ip-up.d/中的所有脚本。

因此,更简单的解决方案是将您的shell脚本放在/etc/ppp/ip-up.d/中,或者编辑(或者创建) /etc/ppp/ip-up (如果不存在)。有类似的…ipv6-up,也有…-down变体。还有一些,请查看pppd手册的“脚本”部分以获得详细信息。

请记住,您可以只使用up脚本来指示您的脚本(或其他一些)链接已经准备好了--它不需要自己做这项工作。例如,您可以使用像kill -USR1 other-script-pid这样简单的信号,然后使用trap & sleep等待该信号。或者,您可以打开一个命名管道("fifo",例如,mkfifo)进行阅读(这将阻塞直到有一个作者),然后让up脚本只使用echo alive > /path/to/fifo。或者可能回显IP地址或其他有用的信息。或者您的脚本可以是kill -STOP $$,然后是up脚本可以是kill -CONT script-pid。要做到这一点,有很多方法。(你甚至可以全力以赴使用dbus。)

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/101003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档