如何 运行 2 行并排 bash

how to run 2 lines on in bash side by side

我是 Bash 的新手,我试图让这个脚本在我连接和断开连接到我的 VPN 时通知我。

我遇到的问题是当我 运行 我的 "openvpn" 它将停止收听后面的其余行所以我不得不在我之前放置我的 "connected" 通知行甚至登录。有没有更理想的方式我可以写这个,这样我的 "connected" 线路只会 运行 当打开的 vpn 线路连接时?

如果有帮助,这是为了 Ubuntu。

#!/bin/bash

set -e

function discon {
  notify-send -i /usr/share/icons/Adwaita/32x32/devices/network-vpn.png "Home Network" "Disconnected"
}

notify-send -i /usr/share/icons/Adwaita/32x32/devices/network-vpn.png "Home Network" "Connected"

openvpn --config /home/matthew/Documents/vpn/MatthewLaptop.ovpn

trap discon EXIT

您可以附加 & 以从终端分离进程。否则 bash 只会在 openvpn 退出时继续脚本。

openvpn --config /home/matthew/Documents/vpn/MatthewLaptop.ovpn &

您可能想让 OpenVPN 自己处理这个通知。

来自OpenVPN man page

   --up cmd
          Run command  after successful TUN/TAP device open (pre --
          UID change).

           consists of  a  path  to  script  (or  executable  program),
          optionally  followed by arguments. The path and arguments may be
          single- or double-quoted and/or escaped using a  backslash,  and
          should be separated by one or more spaces.

在配置文件中,这就是 up /path/to/script。例如:

user loval
group loval
script-security 2
up /home/loval/bin/vpn_is_up.sh

script-security 位很重要,因为(也来自手册页):

          0 -- Strictly no calling of external programs.
          1  -- (Default) Only call built-in executables such as ifconfig,
          ip, route, or netsh.
          2 -- Allow calling  of  built-in  executables  and  user-defined
          scripts.
          3  --  Allow passwords to be passed to scripts via environmental
          variables (potentially unsafe).

另请阅读 --up-restart--down 选项。