unix

[Synology] Du DSM au terminal..

Cet article a été rédigé il y a 4 années ! Il commence à dater, mais n'est pas forcément obsolète.. Lisez-le en gardant cela en tête !
Bonsoir, Si vous avez lu quelques uns de mes articles sur les Synology, vous remarquerez que j’utilise beaucoup le terminal et non le dsm comme outil pour installer mes paquets (Cf. Geasy). Je pense que c’est encore le meilleur moyen pour communiquer avec n’importe quel appareil Unix via une connexion ssh par exemple. Je trouve que l’interface du DSM n’est pas une interface désagréable et je passe volontiers par elle quand cela est nécessaire. Néanmoins, je vais vous montrer quelques rudiment sur le Terminal, vous permettant de jouer avec votre Syno et sa configuration comme si vous étiez sur le DSM ! /!\ Malgré tout, attention à ne pas faire n’importe quoi ! Ce tutoriel est destiné à des personnes ayant déjà beaucoup utilisé le terminal unix! Si vous n’êtes pas certain de ce que vous allez faire ne le faite pas sans un avis extérieur !  

I) Informations à propos de votre Syno

Synology utilise pour son DSM une série de programmes très peu documenté ! Néanmoins si l’on s’y connait un peu, on arrive toujours à bidouiller pour comprendre comment il marche ! Voici le résumé des commandes syno* que j’ai réussi à comprendre et qui m’ont servi jusqu’à présent ! infos

1. Information réseau : synonet

Lancez la commande pour voir les interfaces réseau qu’utilise votre Syno
synonet –show
Après à coup de xargs, awk ou grep vous pourrez vous débrouiller pour récupérer l’information qui vous intéresse ! Vous pourrez aussi changer la configuration des interfaces qui vous intéressent, en utilisant différentes commandes, plutôt claires quand on regarde l’aide :
synonet –help

2. Configuration système de votre Syno

Le fichier très intéressant et vous permettant de tout savoir sur votre système s’appelle :
/etc.defaults/synoinfo.conf
Quand on regarde à l’intérieur, on y trouve des variables très intéressantes que l’on peut récupérer à l’aide de la commande suivante :

get_key_value /etc/synoinfo.conf <nom_variable>

où vous n’avez juste qu’à remplacez <nom_variable> par le nom d’une des variables du fichier synoinfo.conf qui vous intéresse !  

II) Gestion de tâches automatiques

Depuis votre Syno vous pouvez très bien préparer des tâches qui seront exécuter le moment venu. taches Eh bien pour cela commencez déjà par regarder quelles sont les tâches enregistrées à l’aide de la commande :
synoschedtask –get
Vous y trouverez une liste des commandes que vous avez déjà ajouter depuis le DSM, si vous l’avez fait ! Sinon
ID: [2] Name: [Update Gandi API] State: [enabled] Owner: [admin] Type: [daily] Start date: [0/0/0] Run time: [0]:[0] Repeat every [1] hour(s) until [23]:[0] Command: [cd /volume1/homes/admin/apigandi/ && ./update_api] Last Run Time: Sun Aug 3 18:00:03 2014 Status: [Success] ID: [1] Name: [Update Selfoss] State: [enabled] Owner: [admin] Type: [daily] Start date: [0/0/0] Run time: [0]:[0] Repeat every [1] hour(s) until [23]:[0] Command: [curl http://selfoss.gauss-it.net/update] Last Run Time: Sun Aug 3 18:00:03 2014 Status: [Success] ID: [71270000] Name: [PowerOn task 0] State: [enabled] Owner: [root] Type: [daily] Start date: [0/0/0] Run time: [0]:[0] Command: [] Status: [No last run record]
Repérez l’ID de la tache qui vous intéresse et notez le. Il ne vous reste plus qu’à lancez la commande :
synoschedtask –run id=<id>

En remplaçant <id>, par l’id de la tâche que vous souhaitez lancer. Pour lancez la tâche !

Vos tâches sont stockées ici : /usr/syno/etc/scheduled_tasks

Vous pouvez en rajouter pour qu’elles apparaissent depuis l’interface de votre DSM.. Néanmoins cela reste très compliqué je trouve.. Depuis le terminal il est quand même plus commode d’utiliser la crontab.. bien connu des systèmes unix ! Et installée sur les syno par défaut puisque synoschedtask l’utilise.. Pour ajouter vos propres commandes vous pouvez très bien les ajouter à la suite du fichier /etc/crontab  

II) Notifications avancées

notif Voici une partie très intéressante je trouve, puisqu’avec ces explications vous allez pouvoir personnalisées les notifications de envoyées de votre Syno.. Que ce soit par SMS, Mail, Mobile (notifications push), etc.. Comment faire cela ? Pour cela, il y a 2 fichiers très importants :
/usr/syno/etc/notification/mails /usr/syno/etc/notification/notification_filter.settings
Le premier contient le texte des notifications à envoyer. Le deuxième permet au programme synonotify de savoir comment envoyer les notifications (par mail, sms, push,..). Ajouter n’importe où dans le fichier mails le texte suivant :

[MonPremierTag] Category: System Title: Titre de mon premier Tag Subject: Mon premier Tag

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sed nunc et est dapibus lacinia. Integer laoreet turpis libero, convallis accumsan sapien dapibus ac.

  Puis n’importe où dans le fichier notification_filter.settings :

MonPremierTag="mail,mobile,cms"

  Sans redémarrer, ni rien, lancez la commande suivante : synonotify MonPremierTag Si vous avez correctement configuré l’envoi des mails, notifications push ou autre depuis votre DSM, vous allez très rapidement être notifié ! Vous venez d’envoyer votre premier message personnalisé. Personnelement ce que je trouve génial est de pouvoir utiliser aussi les notification Push qui sont normalement restreintes, cela fait que vous recevez directement l’information sur votre Smartphone aussi si vous avez installé et configuré DS Finder. Note1 : /usr/syno/synoman/webman/texts/ contient les différentes notifications par défaut en différentes langues.. Ne pas modifier ces fichiers, il s’agit des textes par défaut des notifications ! Note 2 : Pour l’instant, tous les tags contenant un champ de la forme %MOT% ne sera pas envoyé, car le programme synonotify tourne en boucle.. lisant le fichier /usr/syno/etc/notification/mails, jusqu’à ce qu’il sache remplacer la variable %MOT%.. Seul les variables %HOSTNAME% et %COMPANY_NAME% fonctionnent par défaut. Je ne sais pas encore comment arranger cela pour le moment, je posterai un correctif dès que j’aurai la solution ! Si vous souhaitez intégrer votre tag a l’interface du Syno il faudra modifier le fichier
/usr/syno/synoman/webman/texts/<langue_de_votre_syno>/notifications_category
Mais cela est assez compliqué (et surtout encodé en json alors ça me gonfle un peu de donner toutes les explications si cela ne sert à personne ! N’hésitez pas à me demander en postant un commentaire pour que je vous donne l’explication!) Note 3 : Vous aurez peut-etre remarqué que synonotify vous a aussi notifié depuis l’interface du DSM ! Pour envoyer simplement une notification depuis le DSM lancez la commande suivante :
synodsmnotify "Notification test" "Ceci est une notification test."
Génial non ? :-))  

III) Gérer votre Firewall depuis votre Syno

secu A présent passons au firewall ! J’ai aujourd’hui même été la cible d’une attaque visant à surchargé votre réseau. Ce qui fait que le réseau ayant la plus petit bande-passante perd ! Dans mon cas, c’était bien évidemment moi.. Ce qui a fait que si vous visiteur qui me lisez, chargez une page venant de mon serveur, cela prenait durant l’attaque extrêmement longtemps, puisque qqn utilisait toutes les ressources permettant de transférer l’information de chez moi jusqu’à chez vous ! Bref pour cela, vous pouvez être amené à bloquer des ip. Il y a sur le DSM le blocage automatique des ip après trop de tentatives, néanmoins là le pirate n’a pas cherché à se connecter chez moi.. Seulement à m’envoyer des trames brutes ou non sur la couche TCP de mon réseau. Dans ce cas, il vous faut aller directement dans le firewall de votre Syno. Dans la mesure où mon routeur n’était pas en première ligne pour arrêter le pirate,.. ce qui est souvent synonyme d’une mauvaise configuration de votre routeur.. (Ce que je me suis empresser de modifier pour vous permettre de me lire..) Bref pour modifier votre firewall du Syno il vous suffit de lancer la commande suivante pour ajouter d’autres règles :
synofirewall –insert <interface> <id>
A savoir que l’interface est l’interface réseau que votre nas utilise (vous la trouverez en utilisant synonet !!!) Et id est le numéro id de la règle que vous souhaitez créer ! A partir de là suivez les indications sur le terminal, voici ce que cela donne chez moi:

root@gauss:~# synofirewall –insert eth0 1 ports (0:ALL; 1:built-in; 2:custom) :0 source (0:ALL; 1:single host; 2:subnet) : 1 source IP address : X.X.X.X action (0:allow 1:deny) : 1 status (0:disable; 1:enable) :1 Rule ID : 1 status  : enable ports   : ALL protocol: (all) source  : X.X.X.X action  : deny Rule is successfully inserted.

X.X.X.X est l’IP a bloquer par exemple ! Note : Si vous souhaitez automatiser la commande lancez cela (utile pour lancer dans un script !!) :
synofirewall –insert eth0 1 << EOF 0 1 X.X.X.X 1 1 EOF
  Enfin regardez l’aide de la commande pour pouvoir effectuer d’autres actions, comme supprimer une règle du firewall.
synofirewall –help
   

IV) Manipuler les données de votre Syno

partage

1. Manipuler les utilisateurs

Pour les membres la commande est la suivante :
synouser
Pour ajouter un membre il faut utiliser la commande un peu compliquée :
synouser -add <utilisateur> <passwd> "" 0 "" 0
  Autrement il faut un peu fouiner encore une fois dans l’aide !  

2. Manipuler les groupes de votre serveur

Pour manipuler les groupes, il vous faudra apprendre à utiliser la commande
 synogroup

Néanmoins vous pouvez déjà avoir la liste complète des groupes, à l’aide de la commande :

synogroup –enum all

  Avec l’aide y a moyen de s’en sortir un peu en cherchant, si vous ne trouvez ce que vous voulez faire, n’hésitez pas à m’écrire un commentaire pour qu’on trouve une solution.. (C’est bien cette commande qu’il faut utiliser d’ailleurs pour mettre un utilisateur dans un groupe spécifique !)
 synogroup –help
 

3. Essayez de vous connecter ?

Pour simuler une connexion lancez la commande :
synoauth <utilisateur> <mot_de_passe>
  Rien à dire de plus! Je pense que cette commande est facile d’utilisation dans vos programme pour relier par exemple : Site web et Synology !! 🙂  

4. Vos dossiers partagés

Voici la dernière commande que je vous présenterez aujourd’hui, il s’agit de :
synoshare
Pour vous permettre de gérer vos dossiers partagés ! 🙂 Pour en avoir une liste il suffit de lancer la commande :
synoshare –enum all
  Sinon encore une fois, le plus simple est d’aller dans l’aide :
synoshare –help

 

Conclusion,

Si vous souhaitez plus de détails sur certaines commandes n’hésitez pas à me le demander en commentaire, dans les limites de mes connaissances 🙂 Avec toutes ces informations, vous avez à présent les cartes en main pour améliorer vos script-shell, mais aussi interagir avec le DSM, histoire de d’utiliser pleinement les technologies d’interface qui vous sont offertes par Synology !

4 réponses à “[Synology] Du DSM au terminal..

  1. Super informations complémentaire pour les syno users un peu bidouilleur. Dit moi je souhaiterais revenir sur la parti notification. Je souhaiterai utiliser pushbullet pour l’envoi de notification via mon NAS.
    Alors après quelque heures de magouille avec l’interface de notification de DSM et Message forwarder je me rend compte que ce n’est pas trop possible.

    Une astuce est par contre possible avec l’ajout de notre propre fournisseur d’envoi SMS. Le petit hack à ce niveau serait de faire exécuter une commande curl à notre syno pour chaque notification, mais DSM oblige un formatage particulier de l’URL.

    As-tu déjà tenté l’opération ? Ou vois-tu une astuce pour pourvoir déclencher à chaque événement une commande particulière ?

    Je suis sous DSM 5 🙂

    Je me rend compte que DSM oblige un formatage particu

  2. J’utilise aussi:
    Pour faire l’update de mon DSM:
    synoupgrade –auto

    Pour monter un share crypté:
    synoshare –enc_mount …

    Par contre, je cherche le moyen de faire un "Update All" du Package Center mais depuis une console ssh.

    Une idée ?

  3. Super infos.
    Saurais-tu comment envoyer un mail directement en ligne de commande directement via la distrib DSM (sans avoir recours à nail; ipkg, etc.)?

    Merci d’avance

  4. Bonjour,
    et merci pour ces sympathiques ressources 🙂

    Concernant les variables, par exemple %HTTP_URL% ou %HOSTNAME%, je n’arrive pas à trouver comment elles sont déterminées par le système du syno.
    Par exemple %HOSTNAME% n’est pas le nom DNS entièrement qualifié (FQDN), ce que je trouve surprenant non ?

    Et/ou : comment prendre la main dessus, c’est à dire modifier à sa guise la valeur de ces variables ?

    Une idée ?

    Merci

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *