Треба було з’єднатися сьогодні з 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

Це все, на одну хвилину менше щоденної рутини, одне очко до карми ;-)