bash序列:等待输出,然后启动下一个程序
在我的情况下,我必须在ssh’ing进入服务器之前运行openvpn,并且openvpn命令回显“初始化序列已完成”.
所以,我希望我的脚本设置openvpn然后ssh in. 我的问题是:你如何在后台执行bash命令并等待它在运行另一个程序之前回显“已完成”? 我目前的做法是打开2个终端窗格,其中一个正在运行: sudo openvpn --config FILE 在另一个我运行: ssh SERVER 一旦第一个终端窗格显示“初始化序列已完成”文本.
好像你想要
run openvpn as a process in the background while processing its stdout in the foreground.
exec 3< <(sudo openvpn --config FILE) sed '/Initialization Sequence Completed$/q' <&3 ; cat <&3 & # VPN initialization is now complete and running in the background ssh SERVER 说明 让我们分成几块: > echo<(sudo openvpn --config FILE)将打印出类似/ dev / fd63的内容 > exec 3<的/ dev / fd63 > sed’/初始化序列已完成$/ q’<& 3 > cat<& 3& 基本思路是在后台运行openvpn,但在某处捕获它的输出,以便我们可以在前台运行一个命令,直到它读取魔术词“Initialization Sequence Completed”.上面的代码尝试在不创建凌乱的临时文件的情况下执行此操作,但更简单的方法可能只是使用临时文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |