"Уловка" заключается в том, что whiptail (например, диалог) записывает свои сообщения по умолчанию в стандартную ошибку , поскольку обычная программа использует стандартный вывод для обновления экрана.
Вы можете перенаправить стандартную ошибку, поместив 2
рядом с меткой >
:
#!/bin/bash
/usr/bin/whiptail --infobox 'Hello World.' 7 25 2>/dev/tty1
Дополнительная литература:
Как я делал на Centos7, я решил эту проблему с помощью sysmtemd-networkd. Он прослушивает все сетевые устройства, указанные вами в /etc/systemd/network/
Например, 20-static-tap_clients.network выглядит так:
[Match]
Name=tap_clients
[Network]
Address=192.168.103.1/24
Изменив tap_clients
с именем вашего интерфейса tap и изменив de IP адрес на нужный вам IP.
Вы должны отключить службу NetworkManager и включить systemd-networkd. Что касается softether, я также создал файлы модулей и поместил их в /usr/lib/systemd/system
softether-vpnserver.service
[Unit]
Description=SoftEther VPN Server
After=network.target auditd.service
ConditionPathExists=!/opt/vpnserver/do_not_run
[Service]
Type=forking
EnvironmentFile=-/opt/vpnserver
ExecStart=/opt/vpnserver/vpnserver start
ExecStop=/opt/vpnserver/vpnserver stop
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Alias=softether-vpnserver.service
softether-vpnbridge.service
[Unit]
Description=SoftEther VPN Bridge
After=network.target auditd.service
ConditionPathExists=!/opt/vpnbridge/do_not_run
[Service]
Type=forking
ExecStart=/opt/vpnbridge/vpnbridge start
ExecStop=/opt/vpnbridge/vpnbridge stop
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Alias=softether-vpnserver.service
и softether-vpnclient.service
[Unit]
Description=SoftEther VPN Client
After=network.target auditd.service
ConditionPathExists=!/opt/vpnclient/do_not_run
[Service]
Type=forking
EnvironmentFile=-/opt/vpnclient
ExecStart=/opt/vpnclient/vpnclient start
ExecStop=/opt/vpnclient/vpnclient stop
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Alias=softether-vpnclient.service
Вы можете наблюдать за интерфейсом в цикле while следующим образом:
#!/bin/sh
trap exit 1 2 15
while true; do
if [ "$(ip l | fgrep IFACE: | wc -l)" -gt 0 ]; then
# run dhclient/ifup for your IFACE here
break
fi
sleep 1
done
Но я надеюсь, что SoftEther VPN может настроить интерфейс TAP, должна быть опция для сценария, который пишет пользователь, или опции, которые управляют конфигурацией интерфейса TAP где-нибудь в конфигурации файл (ы) или графический интерфейс программы.