Автоматизація клієнта VPN
Треба було з’єднатися сьогодні з VPN. Для цього був потрібен клієнт з відкритим початковим кодом shrew soft. В дистрибутиві Arch для цього навіть є пакунок AUR ike. Його легко використовувати, але він набридливо інтерактивний і, зрештою, займає цілий термінал. Розгляньмо типовий сеанс:
kionia:~ % ikec -r Company
ii : ## : VPN Connect, ver 2.2.1
## : Copyright 2013 Shrew Soft Inc.
## : press the <h> key for help
>> : config loaded for site 'Company'
ii : Use the following keys to control client connectivity
- : <c> connect
- : <d> disconnect
- : <h> help
- : <s> status
- : <q> quit
>> : attached to key daemon ...
>> : peer configured
>> : iskamp proposal configured
>> : esp proposal configured
>> : client configured
<< : enter xauth username : asakhnik
<< : enter xauth password :
>> : local id configured
>> : remote id configured
>> : pre-shared key configured
ii : bringing up tunnel ...
>> : network device configured
ii : tunnel enabled
Тепер я покажу, як запрягти expect, щоб цю рутину для мене виконував systemd щоразу при вході в систему.
Спочатку створюємо скрипт для взаємодії з клієнтом VPN (~/bin/company.exp
):
#!/usr/bin/expect
spawn ikec -r Company
expect "config loaded"
send c
expect "xauth username : " { send "asakhnik\r" }
expect "xauth password : " { send "MyVerySecretPassword\r" }
expect "tunnel enabled"
wait
Потім створюємо нову службу користувача для systemd
(~/.config/systemd/user/company-vpn.service
):
[Unit]
Description=Company VPN access
[Service]
ExecStart=/home/sakhnik/bin/company.exp
[Install]
WantedBy=default.target
Нарешті, вмикаємо її:
systemctl --user daemon-reload
systemctl --user start company-vpn.service
systemct --user enable company-vpn.service
Це все, на одну хвилину менше щоденної рутини, одне очко до карми ;-)