Notes et astuces sur les systèmes libres basés sur GNU/Linux

Aller au contenu | Aller au menu | Aller à la recherche

Mot-clé - cli

Fil des billets

dimanche, 23 novembre 2014

#En_vrac 2 : News et tips du jour

Bonsoir cher journal toilé (Web log => blog), calendrier-2024.jpg

Fais le bilan :

Je regardais mes archives de blogging, cela va bientôt faire 5 ans que je publie mes petites notes.
Entre temps tout a changé :

  • Je suis passé d'étudiant à salarié
  • J'ai déménagé : 1,2,3,4,5 fois. En mode Bornien :D
  • Le blog est passé d'un mutualisé à un serveur dédié et dans pas longtemps vers l'auto-hebergement
  • J'ai continué à faire le tour des distributions GNU/Linux, je pense que je suis bien avec ma Debian. Je vais même retourné sous I3, le tiling me manque trop.

Il n'y a bien qu'une chose qui n'a pas changé : c'est mon rythme de publication.

Travail en cours sur des solutions libres :

  • Nous sommes en train de monter la supervision d'une infrastructure de plus de 2000 serveurs qui va être basée sur Zabbix. L'étude de faisabilité est en cours, le packaging va venir mais je pense que cela va être pas mal. Nous partons sur une architecture arborescente (superviseur national et une quarantaine de proxy) avec du SNMP. Est-ce que l'utilisation de l'agent Zabbix est à recommander par rapport à l'agen SNMP, si vous avez une expérience faites le moi savoir !
  • Un outil de déploiement centralisé de Puppet basé sur Ansible. Cela nous évite d'utiliser l'usine à gaz MCollective etc ... Cela me semble assez performant. L'outil est en recette mais se comporte plutôt très bien.
  • Un ordonnanceur Rundeck pour gérer l'ensemble des crons d'une partie de notre infrastructure, l'outil s'installe bien out-of-box. J'ai même réussi à lui faire utiliser CommandProxy.
  • Pydio, je pense que je vais l'installer sur mon serveur car cela s'installe facilement, la configuration est un peu fastidieuse mais cela me permettra de synchroniser l'ensemble de mes environnements.

Tips/Découvertes du moment :

Vim dans xterm
La dernière fois, je vous disais que j'en étais réduit à utiliser Gvim pour afficher correctement le thème Solarized. Heureusement, nous étions plusieurs sur le coup au boulot. Il suffisait de passer vim en 256 couleurs :

set t_Co=256

Le mystère de htop :
Je viens de découvrir que Htop affiche par défaut les threads alors que top non. La configuration de htop via F2 permet de les masquer ou changer leur couleur si vous le souhaitez. Source

Astuces sur Proxmox :

  • Pour accéder à la console de vos containers dans Proxmox VE 3.1, il faut que votre fichier /etc/init/tty1.conf dans vos templates Debian/Ubuntu ressemble à ça :
 start on stopped rc RUNLEVEL=[2345]
 stop on runlevel [!2345]
 respawn
 exec /sbin/getty -8 38400 tty1

Puis rebooter votre CT. Cela devrait fonctionner
Le wiki n'est pas à jour mais je vous donne quand même le lien : Wiki container Proxmox

  • Quand on a une carte mère UEFI, il vaut mieux passer par Proxmox3.1 puis utiliser la commande pveupgrade ou par une Debian puis installer Proxmox.
  • Pour mettre en marche le softraid avec Proxmox, je vous conseille la lecture suivante.
  • Supprimer le message de pub dans Proxmox: http://www.jamescoyle.net/how-to/614-remove-the-proxmox-no-subscription-message

Créer une clé bootable sous GNU/Linux :
Pour faire une clé usb bootable usb uefi :

dd if=votrefichieriso.iso of=/dev/sdc && sync

Ne pas mettre le numéro de partition derrière.

Astuce sur less :

  • Pour afficher les lignes dans less :
less -N
  • Pour se positionner à la ligne numéro :
less +42 fichier
  • Pour afficher les couleurs dans less :
less -R

Recherche multiples Grep :
Pour chercher plusieurs pattern dans un seul grep :

grep 'pattern1\|pattern2' fichier

Problème de démontage :
Si vous n'arrivez pas à démonter un volume de votre système *Nix, je peux vous conseiller d'utiliser les commandes suivantes :

umount /mnt
umount2: Device or resource busy
umount: /mnt: device is busy 

lsof | grep votre_montage #Permet de savoir quel process utilise quoi
fuser -m votre_montage # a peu près equivalent
umount -l /dev/sdb1 #Demonte le point de montage en faisant un peu de ménage

Comme vous pouvez le noter, le mois dernier a été fructueux en petites découvertes, ce qui donne un billet complètement décousu. Il faudrait que j'en fasse plusieurs afin de faire péter mes stats :D



A demain dans le train.

dimanche, 30 décembre 2012

Ttyecho : Lancer un editeur de texte CLI depuis une GUI

Echo

Bonjour,

Derrière ce titre un peu alambiqué se cache un petit plaisir personnel enfin assouvi.
Je m'explique, imaginons que vous utilisiez un explorateur de fichier de type GUI (eg. Nautilus, pcmanfm ...) parce que vous êtes un peu tordu, vous utilisez un éditeur de texte en ligne de commande (eg. vim, emacs ou nano).
Cette situation est embêtante car vous avez envie d’éditer un programme en C que vous voyez s'afficher dans votre explorateur mais vous ne pouvez double-cliquer directement dessus car cela ne va pas vous lancer votre éditeur favoris.

Alors, j'ai trouvé une solution que je vais vous détailler ci-dessous, cependant si vous avez d'autres idées je suis comme un bar dans une soirée étudiante, open !

Bon on commence par récupérer le code source magique de ttyecho :

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <string.h>
#include <unistd.h>

void print_help(char *prog_name) {
        printf("Usage: %s [-n] DEVNAME COMMAND\n", prog_name);
        printf("Usage: '-n' is an optional argument if you want to push a new line at the end of the text\n");
        printf("Usage: Will require 'sudo' to run if the executable is not setuid root\n");
        exit(1);
}

int main (int argc, char *argv[]) {
    char *cmd, *nl = "\n";
    int i, fd;
    int devno, commandno, newline;
    int mem_len;
    devno = 1; commandno = 2; newline = 0;
    if (argc < 3) {
        print_help(argv[0]);
    }
    if (argc > 3 && argv[1][0] == '-' && argv[1][1] == 'n') {
        devno = 2; commandno = 3; newline=1;
    } else if (argc > 3 && argv[1][0] == '-' && argv[1][1] != 'n') {
        printf("Invalid Option\n");
        print_help(argv[0]);
    }
    fd = open(argv[devno],O_RDWR);
    if(fd == -1) {
        perror("open DEVICE");
        exit(1);
    }
    mem_len = 0;
    for ( i = commandno; i < argc; i++ ) {
        mem_len += strlen(argv[i]) + 2;
        if ( i > commandno ) {
            cmd = (char *)realloc((void *)cmd, mem_len);
        } else { //i == commandno
            cmd = (char *)malloc(mem_len);
        }

        strcat(cmd, argv[i]);
        strcat(cmd, " ");
    }
  if (newline == 0)
        usleep(225000);
    for (i = 0; cmd[i]; i++)
        ioctl (fd, TIOCSTI, cmd+i);
    if (newline == 1)
        ioctl (fd, TIOCSTI, nl);
    close(fd);
    free((void *)cmd);
    exit (0);
}

1. On stocke tout ça dans un fichier ttyecho.c par exemple.

2. On compile :

make ttyecho

3. On fait une petite copie vers un répertoire binaire contenu dans votre PATH :

sudo cp ttyecho /usr/local/bin/ttyecho

Pour vérifier que tout est en ordre, vous pouvez ouvrir deux terminaux.

#Terminal1
tty
> /dev/pts/0

sudo ttyecho -n /dev/pts/1 echo "toto"
#Terminal2
tty
> /dev/pts/1
>toto
  • Il est à noter que nous sommes obliger d'effectuer cette opération en tant que root.
  • L'option -n, permet d'effectuer un retour chariot dans le terminal distant.

Pour remédier au problème de droit, je vous propose cette manipulation qui comme d'habitude n'est pas très secure :

chmod +s /usr/local/bin/ttyecho

Avec le sticky bit, les utilisateurs qui lanceront cette commande auront les droits du propriétaire du fichier autrement dit "root".

Et maintenant le bouquet final : Application à notre problème

  • On ouvre notre explorateur de fichier, pour moi c'est pcmanfm.
  • On fait un joli clic-droit sur le fichier que nous souhaitons editer (ttyecho.c).
  • On choisit l'item "open with" et on remplit l'onglet "custom command line" comme suit :
ttyecho -n/dev/pts/0 nano %f

Il peut paraitre sot de rappeler qu'il faut que /dev/pts/0 soit déjà ouvert ...

Enjoy !

mardi, 21 février 2012

Paramètrages "avancés" de Midnight Commander

Bonjour,

Il y a trois mois dans cet l'article, je vous avais promis de vous donner deux trois astuces complémentaires.
Mon ordinateur de boulot fonctionnant sous Windows 7, je n'ai pas eu l'occasion de me replonger sur le merdier (mc).

Pourquoi maintenant me direz-vous ?
Parce que j'ai réussi à installer Archlinux sur un de mes PC de boulot. La chose n'a pas été aisée mais je ne rentrerai pas dans les détails aujourd'hui, un article est prévu pour vous décrire par le menu mes péripéties.
Tout ça pour dire que je suis bien content de pouvoir travailler sous Archlinux, cela me permet de tester rapidement les applications et configurations de ma (votre) distribution préférée.

Pour revenir au but du billet, voici quelques petites choses qui devraient vous permettre de vous sentir chez vous avec Midnight Commander.

Choisir ce qu'affiche Midnight Commander :
Par défaut, mc n'est peut être pas à votre goût, sachez que vous pouvez le configurer simplement grâce à un certain nombre de boite de dialogue. Voici les options que j'ai choisi pour l'affichage des fichiers.
Il faut activer le menu du haut (F9), puis choisir le menu contextuel Option (o) et sélectionner l'item Panel Options. La boite de dialogue ci-dessous vous permettra de cocher/décocher les options de votre choix à l'aide de la touche espace.
Dans notre cas, il suffit de décocher la ligne Show hidden files afin de ne plus afficher les fichiers cachés.
Décocher également l'affichage des fichiers backup.
Cocher la ligne Mix all files. Cela permet d'avoir un tri alphabétiques sur les fichiers/dossiers confondus.

MC Panel Option

Une recherche rapide dans un listing de fichiers :
Dans beaucoup d'explorateurs de fichiers, vous pouvez préselectionner un fichier en tapant ces initiales. Avec mc, la chose est possible.
La recherche d'un pattern s'effectue à l'aide du raccourci clavier Ctrl+s. Pour changer d’occurrence, il suffit de retaper Ctrl+s. Il est à noter que la recherche peut s'effectuer avec des jokers Bash (* ?), ce qui est plutôt agréable.

MC search pattern

C'est tout pour ce billet, Midnight Commander permet bien d'autres choses comme :

  • la copie en tâches de fond
  • la gestion de connexion smb,ftp, ssh
  • Regler le mode listage
  • Configurer les menu
  • Configurer les hotkeys
  • Configurer les raccourcis claviers
  • Configurer l'affichage de l'explorateur (deux panels, un panel, vertical, hortizontal ...)
  • Gestion du multi-ecran
  • Comparaison de fichiers
  • ....

Mais ce ne sont pas des fonctionnalités que j'utilise donc je ne rentrerai pas dans le détail. Sachez que cela existe et que si cela vous intéresse la documentation est là pour vous. En espérant, vous avoir fait découvrir quelque chose à travers ces deux billets.

Merci de votre lecture et de vos commentaires qui sont toujours les bienvenus.

La Pêche !!!

vendredi, 18 novembre 2011

Gestion de fichier avec Midnight Commander : A minuit tous les fichiers sont gris ...

Bonjour,

Aujourd'hui j'aimerais vous présenter un gestionnaire de fichier que j'utilise depuis plusieurs semaines.
Son utilisation m'a été suggéré lors d'un billet de WeedFast.
En effet, ce dernier nous présentait ses coups de cœur applicatifs du moment. Il faisait l'éloge de Ranger, un navigateur de fichier CLI. Après l'avoir essayé quelques jours, je ne le trouvais pas intuitif et peu pratique.
Il avait cependant noté une alternative nommée Midnight Commander.

loupe.jpg

Quelques informations à savoir sur Midnight Commander avant de commencer


  • Ce logiciel est un gestionnaire de fichier en ligne de commande comme Ranger. Son interface en ncurse permet de l'utiliser de manière semi-graphique avec sa petite souris.
  • Son gros point fort pour moi est son ergonomie et sa facilité de configuration.
  • Ce projet a été inspiré de Norton Commander.
  • Midnight Commander est aussi appelé mc
  • Il a l’extrême avantage d'être multiplateforme (GNU/Linux, GNU/Hurd, FreeBSD, NetBSD, OpenBSD, Solaris, MS Windows).
  • Pour finir, il est développé par une célébrité du monde du libre : Miguel de Icaza.


Je trouve que la phase la plus difficile d'adoption/apprentissage d'un nouveau logiciel réside dans les premiers jours d'utilisation. Aussi, afin de vous convertir tout en souplesse, je vais essayer de vous accompagner dans vos premiers pas avec ce logiciel merveilleux.

Première étape, l'installation

Si vous êtes sous Archlinux, Debian ou Ubuntu, le logiciel se trouve dans les dépôts officiels :

yaourt -S mc
aptitute install mc

Notons que Midnight Commander n'a pas besoin de beaucoup de dépendances.

Deuxième étape, on rentre puis on sort ...

Une fois installé, on va le lancer sinon .... et ben ça sert à rien.
Un simple mc suffit à utiliser le bestiau.

screen.png

Remarquez que Midnight Commander a le bon gout de vous afficher l'arborescence du répertoire de son appel. Je m'explique si vous l'appelez depuis la racine il va vous afficher l’arborescence de la racine.
Je souligne ce point car c'est un avantage des applications en ligne de commande par rapport aux GUI ...

Comme vous pouvez le constater, l'application a une légère teinte bleuté (le thème est modifiable).
Elle affiche le répertoire de lancement sur le panneau de gauche et votre répertoire personnel sur la droite.
Cette disposition s'avère très pratique pour toutes les manipulations de fichiers (copier/coller, déplacement ...).
Une petite configuration permettra de supprimer un panneau si vous le souhaitez.
Enfin, un ensemble de bouton est présent en haut et en bas surlignés par un joli cyan.
Ces derniers vous permettront d'effectuer l'ensemble des configurations et des manipulations, ils seront accessibles par la souris et/ou un raccourci clavier.

Les raccourcis listés en bas sont accessibles via les touches Fonctions suivis du numéro indiqué. Par exemple pour accéder au menu, il faut appuyer sur F2.

index.jpg Pour obtenir de l'aide appuyez sur la F1, ensuite les touches directionnelles permettent d'accéder au contenu très riche. Les touches haut et bas assurent la sélection des liens et le défilement vertical. Les flèches gauche et droite permettent de suivre les liens ou de revenir en arrière.

quit.pngPour fermer une boite de dialogue ou l'application, utilisez le raccourci F10 ou cliquez sur le pseudo-bouton Quit affiché en bas à droite sur l'interface Ncurse.

Pour la barre de menu affichée en haut, elle est accessible à la souris ou en appuyant sur la touche F9 suivi de Tabulation ou de la Hotkey. Pour accéder au menu File : je tape sur F9 puis la touche f....

Troisième étape, les fondamentaux de tous gestionnaires de fichiers


Les déplacements :

  • Soit vous utilisez votre souris et cliquer sur les répertoires sur les répertoires affichés dans les panneaux comme une bête application graphique.
  • Soit vous tapez des petits cd dans le micro-terminal du bas.
cd /home/martin
  • Soit vous utilisez le Quick cd, en appuyant sur les touches Alt+c ou Echap+c selon la compatibilité de votre terminal.


cd.png

Le copier/coller :

bouton_copier.pngUne fois que vous avez fait mumuse en vous déplaçant, vous souhaitez peut être copier/coller des fichiers.
Pour ce faire, sélectionnez ce que vous souhaitez copier/coller avec la touche Inser ou Controle+t puis appuyez sur F5. Une boite de dialogue s'ouvre, vous proposant de copier votre sélection vers un autre répertoire de votre choix. Par défaut, le chemin est celui de votre panneau de droite.

copy.png

Le couper/coller, renommage et déplacements de fichiers

1_cut_32.pngMaintenant les couper/coller ou les mv. Même principe que la manipulation précédente, sélection des fichiers avec Inser ou Controle+t mais au lieu de F5 utilisez F6.

Suppression

6a1dc0091b2f607bda90812ea6dd5b30.pngPour supprimer quoique ce soit (fichiers, répertoires vides ou pleins), sélectionnez vos fichiers à l'aide des raccourcis Inser ou Controle+t puis F8.

suppr.png

Un historique de vos précédentes commandes

historique.gifDans biens des cas, vous pouvez accéder à un historique de vos derniers commandes, en effectuant la combinaison Alt+h ou Echap+h. Enfin l'auto-complétion est "accessible" via Alt-Tab. Je vais vous montrer comment changer ça dans le prochain billet.

histo.png

Quatrième étape, édition ouverture de fichiers

Bien souvent l'utilité d'un gestionnaire de fichier ne se résume pas à ce qui est écrit au-dessus.
On peut par exemple souhaitez éditer un fichier de configuration ou vouloir visualiser une photo ...

Edition et visualisation de fichiers (texte) :

De base, Midnight Commander intègre un éditeur de fichier accessible via la touche F4, il offre aussi un outil permettant de visualiser les fichiers via la touche F3.
Mais bon, moi j'ai mes petites habitudes et je souhaite par exemple utiliser nano pour éditer mes fichiers.
Pas de soucis, il suffit d'aller dans le menu option/configuration puis décocher la checkbox use internal editor et sauver la boite de dialogue (S).

editor.png

Si vous n'avez pas exporté la variable editor, la ligne suivante permet de le faire :

export editor=/bin/nano

Dans le cas contraire, Midnight Commander vous proposera gentiment un choix parmi ce qu'il aura trouvé sur votre ordinateur.

Ouvrir vos fichiers avec vos applications :

Bon tout ça, c'est bien gentil mais moi je veux ouvrir des pdf, lire des vidéos ou regarder des photos comment je fais ? Facile, il suffit de configurer les applications à lancer en fonction de l'extension du fichier.
Pour cela, F9=>C=>e (menu du haut=>Command=>Extension edit) Un petite boite de dialogue s'ouvre, choisissez User :

conf.png

Rechercher l'extension que vous souhaitez, par exemple pour mes PDF j'ai trouvé le passage suivant :

# PDF
type/^PDF
        Open=(see %f &)
        #Open=(acroread %f &)
        #Open=(ghostview %f &)
        View=%view{ascii} pdftotext %f -

Vous constaterez qu'il existe trois actions possibles pour chaque extension.

  • Open : Comme son nom l'indique, action se déclenchant lors de la pression sur la touche Entrée ou double clic
  • View : lors de l'appui sur la touche F3
  • Edit : lors de l'appui sur la touche action F4

Il est intéressant de pouvoir jouer avec ces touches en fonction de nos besoins.

Dans mon cas, je souhaite ouvrir mes PDF avec evince donc j'édite l'action Open.

Open=evince >/dev/null 2>&1 &

Vous noterez que j'ai redirigé les sorties standards et erreurs vers /dev/null si vous ne faites pas cela, vous avez de fortes chances de ne plus pouvoir utiliser Midnight Commander car il ne sera plus lisible.

Et paf, ça fait des chocapic !

Conclusion

Midnight Commander est extrêmement configurable et ce de manière assez facile. J'ai encore quelques astuces sous le coude.

I'll Be back !!