我有一个问题,我的NordVPN帐户,我有时不得不运行客户端10倍以上,与他们的可怕的CLI工具,直到它最终成功地选择了一个服务器,接受我的登录。
我在这里遇到了一个旧帖子,我根据自己的需要进行了调整,现在看起来是这样的:
perl -e 'do { sleep(7); $_ = `nordvpn connect`; print $_; } until (m/connected/);'
它一直运行connect,直到它在输出中看到“connected”这个词。但我想进一步扩展这一点。当它成功地在输出中获取关键字时,我希望它然后为“mpv成功”。wav'或一些类似的东西,玩一个简单的。wav文件位于同一目录。mpv在这方面效果很好。
非常感谢提前!
2条答案
按热度按时间k3bvogb11#
该循环在满足条件时退出,因此只需在循环完成后添加所需的操作
无论
mpv
执行什么操作,都将打印到屏幕上,例如,可以通过更改为这里
STDOUT
流是redirected到null device(/dev/null
),然后STDERR
流(文件描述符2)被重定向到STDOUT
(fd 1)。所以一切都归于虚无。而且,一个人可以把它转过来
虽然这不是那么简洁,但它对于进一步的更改来说更加灵活。它不像原来那样打印命令的返回。如果真的需要的话,这很容易添加。
jum4pzuy2#
在
perl
退出时运行mpv success.wav
即可。如果你想在一行中显示所有内容,可以使用分号。
类似,但避免播放声音,如果
perl
被杀死(例如。例如使用Ctrl-C)。如果
nordvpn
在连接时将退出代码设置为0,否则设置为非零,则Perl程序可以简化为以下内容:如果它没有如上所述设置退出代码,并且如果您不想看到nordvpn的输出,Perl程序可以简化为以下内容: