Возьмем входной файл и получим его для отображения в 24-часовых часах

Вы теряете доступ к своему VPS, потому что после запуска службы VPN ваши ssh-пакеты маршрутизируются через VPN, а не через общедоступный IP-адрес вашего VPS 50.2.1.3.

Предположим, ваш сервер:

  • Общедоступный IP-адрес - 50.1.2.3 (в соответствии с настройками вашего примера)
  • Подсеть общедоступного IP-адреса: 50.1.2.0/24
  • Шлюз по умолчанию - xxx1
  • eth0 - устройство к шлюзу

Выполните следующие действия с помощью iproute2:

ip rule add table 128 from 50.1.2.3
ip route add table 128 to 50.1.2.0/24 dev eth0
ip route add table 128 default via x.x.x.1

Затем запустите конфигурацию клиента OpenVPN: openvpn --config youropenvpn-configfile.ovpn &

После этого вы сможете подключиться к вашему серверу по ssh, пока ваш сервер подключен к сервису vpn.

Вам нужно будет добавить соответствующие фильтры iptable, чтобы ограничить доступ к вашему общедоступному IP из сеансов, отличных от ssh: 22.

0
09.04.2018, 15:44
4 ответа

Джесси _b дал частичный ответ в комментарии , но это может не совсем то, что вы хотите.

Если вы точно описали, что хотите, то это на самом деле очень просто:

while read -a nums
do
    for num in "${nums[@]}"
    do
        printf '%d00 hours ' "$num"
    done
done < file1

read -a numsсчитывает массив значений (, т. е. несколько значений ). "${nums[@]}"относится к набору значений хранится в массиве nums; for num in …перебирает их, назначая каждому элементу num. Затем мы печатаем каждое, за которым следует 00 hoursи пробел.

Это напечатает их все в одной строке, как вы показали в своем вопросе. Чтобы завершить линию, добавьте echoили printf '\n'в конце приведенного выше кода. Если вы хотите, чтобы каждый из них печатался на отдельной строке, измените команду printf(в середине )на

        printf '%d00 hours\n' "$num"
1
28.01.2020, 02:23
1 5 17 10 8 16
1 5 17 10 8 16

$ awk -F" " '{ for(i=1;i<=NF;i++) { $i=$i*100" hours"} print }' file

100 hours 500 hours 1700 hours 1000 hours 800 hours 1600 hours
100 hours 500 hours 1700 hours 1000 hours 800 hours 1600 hours
1
28.01.2020, 02:23

Использованиеbash:

$ printf '%d00 hours ' $(<file)
100 hours 500 hours 1700 hours 1000 hours 800 hours 1600 hours

(без новой строки в конце вывода)

С более сложным форматированием:

$ printf '%02d:00 hours\n' $(<file)
01:00 hours
05:00 hours
17:00 hours
10:00 hours
08:00 hours
16:00 hours
1
28.01.2020, 02:23

Сsed:

sed -E 's/([0-9]+)/\100 hours/g' < the_file
0
28.01.2020, 02:23

Теги

Похожие вопросы