134 liens privés
Un tutoriel sur l'utilisation du gestionnaire de terminaux screen.
J'ai utilisé pdftk pour fusionner deux pdf.
| ========
$ sudo aptitude install pdftk
Les NOUVEAUX paquets suivants vont être installés :
gcj-4.9-jre-lib{a} libgcj-common{a} libgcj15{a} pdftk
(...)
| ========
Pour fusionner :
| ========
$ pdftk premier.pdf deuxieme.pdf cat output ensemble.pdf
| ========
Efficace et simple ! :-)
Point de départ: Plein de captures d'écran de dimensions variables à intégrer dans un article de blog.
| ========
$ ls
blogotext_1.png blogotext_2-2.png blogotext_3.png blogotext_5-1.png blogotext_5-3.png blogotext_5-5.png blogotext_5.png
blogotext_2-1.png blogotext_2.png blogotext_4.png blogotext_5-2.png blogotext_5-4.png blogotext_5-6.png blogotext_6.png
| ========
On crée un dossier "mini" pour mettre les miniatures et éviter de mogrify ne réécrive sur les fichiers d'origines :
| ========
$ mkdir mini
| ========
Je veux dans ce cas-ci des images de 500px de large et je me fous de la hauteur pour autant que l'image garde le bon ratio. Je renomme dans la foulée toutes les images en ajoutant "_mini" à la fin avec la commande rename :
| ========
$ mogrify -resize 500x -path mini/ .png
$ rename 's/.png/_mini.png/' mini/.png
| ========
Résultat :
| ========
$ ls
blogotext_1.png blogotext_2-2.png blogotext_3.png blogotext_5-1.png blogotext_5-3.png blogotext_5-5.png blogotext_5.png mini
blogotext_2-1.png blogotext_2.png blogotext_4.png blogotext_5-2.png blogotext_5-4.png blogotext_5-6.png blogotext_6.png
$ ls mini/
blogotext_1_mini.png blogotext_2_mini.png blogotext_5-1_mini.png blogotext_5-4_mini.png blogotext_5_mini.png
blogotext_2-1_mini.png blogotext_3_mini.png blogotext_5-2_mini.png blogotext_5-5_mini.png blogotext_6_mini.png
blogotext_2-2_mini.png blogotext_4_mini.png blogotext_5-3_mini.png blogotext_5-6_mini.png
| ========
(Et pour les curieux, oui, je teste blogotext.)
J'ai un fichier CSV contenant deux colonnes, séparées par une virgule. Je veux supprimer tous les espaces et les tabulations sur ce fichier.
| ========
$ sed "s/[ \t]//g" fichier-original.csv >> fichier-sortie.csv
| ========
Une distribution basée sur Debian Sid (ou Jessie, au choix) avec Vera et Openbox dans l'objectif d'être très léger.
Ça peut être utile un jour. :-)
(via https://www.debian-fr.org/environnement-de-bureau-plus-leger-que-lxde-t52908.html )
Quelques commandes pour voir le matériel qui est dans l'ordinateur. (Pratique quand on ne connaît pas la machine!)
Une autre liste de programmes et commandes : http://doc.ubuntu-fr.org/connaitre_son_materiel
Installer Debian Jessie sur votre smartphone Android. Sympa. :-) Ça ne semble pas hyper utilisable au quotidien (par exemple, pour taper un mail, utiliser le terminal, etc..) Mais c'est un premier pas. À tester !
(via Debian noroot – Applications Android sur Google Play )
Encore une autre vidéo d'hackademy. Cette fois, ça parle d'OpenSSH et il y a des choses que je n'utilisais pas.
Une fois la configuration d'un serveur faite dans dans "~/.ssh/config", on peut éditer directement un fichier avec vim (ou autre).
Je cite l'article sous la vidéo :
| ========
Éditer un fichier distant
$ vim scp://webserver/myfile
| ========
Au boulot, j'utilise beaucoup rdesktop pour me connecter de ma Debian vers des serveurs windows. J'utilise des alias pour me faciliter la vie ( alias rd_SERVEUR = "rdesktop -u USER ...&" ) Mais je n'avais pas jusqu'à présent redirigé les sorties de rdesktop (STDOUT et STDERR) pour ne plus les voir.
J'ai rajouté ça aujourd'hui.
| ========
alias rd_SERVEUR = "rdesktop -u USER -d DOMAINE -x lan -g 1280x1000 IP_SERVEUR > /dev/null 2>&1 &"
| ========
Pour éditer mes nombreux alias, j'ai fait un "rechercher/remplacer" avec vim. (J'ai des alias rdesktop entre la ligne 115 et la ligne 156).
| ========
:115,156s/&\"/> \/dev\/null 2>\&1 \&\"/g
| ========
[Edit 06/08/2015 :
J'ai modifié mes alias pour utiliser screen afin de n'avoir vraiment aucun retour sur la commande :
| ========
alias rd_SERVEUR="screen -S NOM-SERVEUR -d -m rdesktop -u USER -d DOMAINE -x lan -g 1280x1000 IP_SERVEUR
| ========
Avec ça, je n'ai aucun retour dans le terminal, je peux lancer plusieurs sessions RDP à la chaine, etc... :-)
Installation de Zsh :
| ========
$ sudo aptitude install zsh
| ========
Vérifier la version :
| ========
$ zsh --version
zsh 5.0.7 (x86_64-pc-linux-gnu)
| ========
Mettre Zsh comme shell par défaut :
| ========
$ chsh -s /usr/bin/zsh
ou mieux :
$ chsh -s $(which zsh)
| ========
Télécharger et installer Oh-my-zsh :
| ========
$ sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
--2015-07-24 12:13:28-- https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh
Résolution de raw.github.com (raw.github.com)… 23.235.43.133
Connexion à raw.github.com (raw.github.com)|23.235.43.133|:443… connecté.
requête HTTP transmise, en attente de la réponse… 301 Moved Permanently
Emplacement : https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh [suivant]
--2015-07-24 12:13:29-- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh
Résolution de raw.githubusercontent.com (raw.githubusercontent.com)… 23.235.43.133
Connexion à raw.githubusercontent.com (raw.githubusercontent.com)|23.235.43.133|:443… connecté.
requête HTTP transmise, en attente de la réponse… 200 OK
Taille : 2033 (2,0K) [text/plain]
Sauvegarde en : « STDOUT »
- 100%[==================================================================>] 1,99K --.-KB/s ds 0s
2015-07-24 12:13:29 (67,7 MB/s) — envoi vers sortie standard [2033/2033]
Cloning Oh My Zsh...
Clonage dans '/home/simon/.oh-my-zsh'...
remote: Counting objects: 660, done.
remote: Compressing objects: 100% (531/531), done.
remote: Total 660 (delta 15), reused 508 (delta 4), pack-reused 0
Réception d'objets: 100% (660/660), 372.32 KiB | 0 bytes/s, fait.
Résolution des deltas: 100% (15/15), fait.
Vérification de la connectivité... fait.
Looking for an existing zsh config...
Found ~/.zshrc. Backing up to ~/.zshrc.pre-oh-my-zsh
Using the Oh My Zsh template file and adding it to ~/.zshrc
Copying your current PATH and adding it to the end of ~/.zshrc for you.
_ / / ___ _ ____/ /_
/ \/ \ / ` \/ / / / / / / / \
/ // / / / / / / / / / / // / / /_( ) / / /
___// // // // //\, / /_/// //
// ....is now installed!
Please look over the ~/.zshrc file to select plugins, themes, and options.
p.s. Follow us at http://twitter.com/ohmyzsh.
p.p.s. Get stickers and t-shirts at http://shop.planetargon.com.
| ========
J'ai été amené à travailler sur une machine qu'un étudiant a utilisée (un Raspberry Pi). Il a changé le mot de passe. La session démarre automatiquement, je suis sur un terminal et je peux utiliser sudo sans taper de mot de passe (Par défaut sur Raspbian). J'ai besoin de changer le mot de passe de l'utilisateur par défaut (pi) pour y accéder via ssh.
| ========
pi@rpi $ passwd
Changement du mot de passe pour pi.
Mot de passe UNIX (actuel) :
passwd: Erreur de manipulation du jeton d'authentification
Mot de passe non changé
| ========
La solution :
| ========
pi@rpi $ sudo passwd pi
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a été mis à jour avec succès
| ========
Rien de bien sorcier.
Un retour d'expérience d'un passage de Windows à un système GNU/Linux (Debian). Pas de clichés, juste un retour utilisateur.
J'ai appris des choses... J'utilise sudo comme un bourrin, étant utilisateur unique sur mes machines.
| ========
- Do not grant ALL root privileges to a sudo user
peter ALL=(ALL:ALL) ALL
| ========
C'est vrai qu'avec ça, on peut du coup se connecter en root sans devoir taper un autre mot de passe.
| ========
$ sudo su
[sudo] password for $USER:
| ========
alors que si on fait juste "su", il demande le mot de passe ROOT.
| ========
$ su
Mot de passe : (mot de passe ROOT)
| ========
En même temps, une fois qu'on donne tous les privilèges, c'est pareil que donner un accès root...
Installation sur une Debian 8 :
Installer les setuptools de Python ( pour avoir easy_install )
| ========
$ sudo aptitude install python-setuptools
| ========
Installer pip :
| ========
$ sudo easy_install pip
Searching for pip
Reading https://pypi.python.org/simple/pip/
Best match: pip 7.1.0
Downloading https://pypi.python.org/packages/source/p/pip/pip-7.1.0.tar.gz#md5=d935ee9146074b1d3f26c5f0acfd120e
Processing pip-7.1.0.tar.gz
Writing /tmp/easy_install-NyGRPr/pip-7.1.0/setup.cfg
Running pip-7.1.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-NyGRPr/pip-7.1.0/egg-dist-tmp-Hnm6hi
warning: no previously-included files found matching '.coveragerc'
warning: no previously-included files found matching '.mailmap'
warning: no previously-included files found matching '.travis.yml'
warning: no previously-included files found matching 'pip/_vendor/Makefile'
warning: no previously-included files found matching 'tox.ini'
warning: no previously-included files found matching 'dev-requirements.txt'
no previously-included directories found matching '.travis'
no previously-included directories found matching 'docs/_build'
no previously-included directories found matching 'contrib'
no previously-included directories found matching 'tasks'
no previously-included directories found matching 'tests'
Adding pip 7.1.0 to easy-install.pth file
Installing pip script to /usr/local/bin
Installing pip2.7 script to /usr/local/bin
Installing pip2 script to /usr/local/bin
Installed /usr/local/lib/python2.7/dist-packages/pip-7.1.0-py2.7.egg
Processing dependencies for pip
Finished processing dependencies for pip
| ========
Chercher avec pip :
| ========
$ pip search jrnl
klink - Klink is a simple and clean theme for creating Sphinx docs, inspired by jrnl
jrnl - A command line journal application that stores your journal in a plain text file
| ========
Installer jrnl avec pip :
| ========
$ sudo pip install jrnl
Collecting jrnl
Downloading jrnl-1.9.8.tar.gz
Collecting parsedatetime>=1.2 (from jrnl)
Downloading parsedatetime-1.5-py2-none-any.whl (50kB)
100% |████████████████████████████████| 53kB 1.1MB/s
Collecting pytz>=2013b (from jrnl)
Downloading pytz-2015.4-py2.py3-none-any.whl (475kB)
100% |████████████████████████████████| 475kB 771kB/s
Requirement already satisfied (use --upgrade to upgrade): six>=1.6.1 in /usr/lib/python2.7/dist-packages (from jrnl)
Collecting tzlocal>=1.1 (from jrnl)
Downloading tzlocal-1.2.tar.gz
Collecting keyring>=3.3 (from jrnl)
Downloading keyring-5.3.zip (87kB)
100% |████████████████████████████████| 90kB 1.0MB/s
Collecting python-dateutil==1.5 (from jrnl)
Downloading python-dateutil-1.5.tar.gz (233kB)
100% |████████████████████████████████| 237kB 1.3MB/s
Installing collected packages: parsedatetime, pytz, tzlocal, keyring, python-dateutil, jrnl
Running setup.py install for tzlocal
Running setup.py install for keyring
Running setup.py install for python-dateutil
Running setup.py install for jrnl
Successfully installed jrnl-1.9.8 keyring-5.3 parsedatetime-1.5 python-dateutil-1.5 pytz-2015.4 tzlocal-1.2
| ========
Plus qu'à apprendre les commandes par cœur ( voir "$ jrnl --help" ), trouver un moyen pour que toutes les commandes utilisant jrnl ne soit pas stockées dans l'historique et puis synchroniser ça entre les différentes machines.
[Edit 03/11/2015:
J'ai finalement commencé à utilisé "jrnl". Voici quelques commandes de base. Pour éditer les notes, il faut ajouter un éditeur dans ~/.jrnl_config :
| ========
$ cat .jrnl_config
{
"default_hour": 9,
"timeformat": "%Y-%m-%d %H:%M",
"linewrap": 79,
"encrypt": true,
"editor": "vim",
"default_minute": 0,
"highlight": true,
"journals": {
"default": "/home/simon/jrnl/journal.txt"
},
"tagsymbols": "@"
}
| ========
Initialisation du journal (chiffré) :
| ========
$ jrnl now: Titre. Contenu.
Path to your journal file (leave blank for ~/journal.txt):
~/jrnl/journal.txt
Enter password for journal (leave blank for no encryption):
Do you want to store the password in your keychain? [Y/n]
Journal will be encrypted.
[Entry added to default journal]
| ========
Écrire du contenu pour aujourd'hui (à 9am par défaut):
$ jrnl today: Titre. Contenu.
Écrire du contenu pour aujourd'hui à 8pm:
$ jrnl today at 8pm: Titre. Contenu.
Écrire du contenu pour "maintenant" :
$ jrnl now: Titre. Contenu.
OU, simplement :
$ jrnl Titre. Contenu.
Voir le(s) journal(aux):
$ jrnl -ls
Voir le dernier ajout dans le journal :
$ jrnl -n 1
Éditer le dernier ajout dans le journal :
$ jrnl -n 1 --edit
Éditer toutes les notes de 2015 :
$ jrnl -until 2015 --edit
Pour supprimer une note, il faut simplement l'éditer et tout effacer.
Pour ajouter un tag, il suffit de mettre un arobase devant :
$ jrnl Test des @tags.
[Entry added to default journal]
Afficher les notes correspondantes au tag "@tags" :
$ jrnl @tags
2015-11-04 11:19 Test des @tags.
Supprimer toutes les notes contenant le tag "@tags" :
$ jrnl @tags --edit
(et tout effacer avant d'enregistrer.)
[Edit 03/11/2015:
Pour empêcher l'historisation des commandes "jrnl", dans Zsh, on rajoute deux lignes dans le fichier "~/.zshrc" :
| ========
HIST_IGNORE_SPACE="true"
alias jrnl=' jrnl'
| ========
Dans Bash, il faut modifier "~/.bashrc" :
| ========
export HISTCONTROL=ignorespace
alias jrnl=' jrnl'
| ========
Comment rendre une Raspbian "Read-Only". Tous les changements s'écrivent en RAM et on ne craint donc plus les coupures de courant qui peuvent corrompre le système. Je n'ai pas encore testé.
[Edit:
Une première étape peut être de rediriger les logs en RAM : http://hardware-libre.fr/2014/03/raspberry-pi-linux-rediriger-les-logs-en-ram-disk/
[Edit2: ramlog est facile à installer en suivant le tuto de Korben : http://korben.info/raspberry-pi-allonger-la-duree-de-vie-de-vos-cartes-sd.html /]
Et une autre solution consiste à n'utiliser la carte SD que pour booter, à stocker le système sur clé USB ou disque dur externe et à avoir de bonnes sauvegardes. :-) Quelques infos : http://coderthoughts.blogspot.be/2014/01/how-i-learned-to-stop-worrying-about.html
/]
Une distribution basée sur Debian orientée sur la sécurité et le pentesting. (À la manière de Kali Linux)
Comment utiliser chroot pour une application graphique. Merci Kevin pour le lien.
Je garde sous le coude, ça pourrait un jour être utile.
A comprendre absolument. J'ai seulement l'impression que je vais devoir recommencer toute l'installation de mes serveurs après avoir bien compris ça...
[Edit: Résumé pour créer un chroot et s'y "connecter" :
| ========
$ sudo debootstrap --include=locales-all jessie nom_du_chroot http://ftp.be.debian.org/debian
$ sudo chroot nom_du_chroot
$ sudo chroot nom_du_chroot /bin/bash
| ========