Weechat, Screen et systemd

De SeRoM - Wiki
Aller à : navigation, rechercher

Précédemment dans init.d

Précédemment, j'avais un petit init script (system V) pour démarrer weechat une session screen.

 1 #!/bin/sh -e
 2 ### BEGIN INIT INFO
 3 # Provides:          weechat_autostart
 4 # Required-Start:    $local_fs $remote_fs $network $syslog $netdaemons
 5 # Required-Stop:     $local_fs $remote_fs
 6 # Default-Start:     2 3 4 5
 7 # Default-Stop:      0 1 6
 8 # Short-Description: weechat script using screen(1)
 9 # Description:       weechat script using screen(1) to keep torrents working without the user logging in
10 ### END INIT INFO
11 
12 # Démarrer/arrêter weechat sous forme de daemon.
13 
14 NAME=weechatd
15 SCRIPTNAME=/etc/init.d/$NAME
16 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
17 
18 case $1 in
19     start)
20         echo -n "Démarrage de weechat... "
21         # (ne marchera que pour l'utilisateur USER)
22         su -l user -c "screen -fn -dmS weechat nice -19 weechat-curses"
23         echo "Démarré."
24         ;;
25 
26     stop)
27         echo -n "Arrêt de weechat... "
28         echo "Arrêté."
29         ;;
30 
31     restart)
32         echo -n "Arrêt de weechat... "
33         killall weechat-curses
34         echo "Arrêté."
35         echo -n "Démarrage de weechat... "
36         su -l user -c "screen -fn -dmS weechat nice -19 weechat-curses"
37         echo "Démarré."
38         ;;
39 
40     *)
41         echo "Usage: $SCRIPTNAME {start|stop}" >&2
42         exit 2
43         ;;
44 esac

Passage à Systemd

Depuis la passage de mon serveur Debian avec systemd, il a fallut revoir ce script.

Il est remplacé par le fichier de description /etc/systemd/user/weechat@.service:

 1 [Unit]
 2 Description=Manage a screen session for Weechat
 3 
 4 [Service]
 5 Type=forking
 6 User=%I
 7 ExecStart=/bin/sh -c "screen -fn -dmS weechat nice -19 weechat-curses"
 8 ExecStop=/bin/sh -c "screen -fn -dmS weechat nice -19 weechat-curses"
 9 Restart=always
10 
11 [Install]
12 WantedBy=multi-user.target

On demande à systemd de recharger les définition des démons:

 ~# systemctl daemon-reload

Et de là on peut démarrer notre service:

 ~# systemctl start weechat@<user>.service

Pour le démarrage automatique au boot:

 ~# systemctl enable weechat@<user>.service

Note

Note

N'oublier pas de remplacer <user> par le nom de votre utilisateur!

Rattraper la session screen

Voici la commande pour récupérer la session en tant que <user>

 ~$ screen -r weechat

Mais tant qu'à faire, mettons ça dans un petit script (/home/<user>/weechat.sh) pour l'ergonomie ;-)

1 #!/bin/bash
2 
3 stty stop undef; stty start undef; screen -r weechat;

Une fois rendu exécutable (~$ chmod +x /home/<user>/weechat.sh) on peut lancer ceci pour récupérer la main sur notre session screen:

 ~$ ./weechat.sh

Configuration Weechat

Pour être complet, il faut que weechat se reconnecte au serveur (freenode pour ma part à adapter pour vous) et aux channels automatiquement au démarrage.

Soit directement dans weechat via les commandes:

 /set irc.server.freenode.autoconnect on
 /set irc.server.freenode.autoreconnect on
 /set irc.server.freenode.autojoin "#canal1,#canal2"
 /set irc.server.freenode.nicks "pseudo,pseudo2,pseudo3,pseudo4,pseudo5"
 /set irc.server.freenode.sasl_username "pseudo"

Soit dans votre fichier de configuration: ~/.weechat/irc.conf

Références