Вы теряете доступ к своему VPS, потому что после запуска службы VPN ваши ssh-пакеты маршрутизируются через VPN, а не через общедоступный IP-адрес вашего VPS 50.2.1.3.
Предположим, ваш сервер:
Выполните следующие действия с помощью 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.
Джесси _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 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
Использование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