Ici vous trouverez des mini-astuces pour vous simplifier la vie : d'un script bash de 10 lignes pour lancer mpc et sa liste de lecture préférée aux raccourcis claviers de divers programmes. Aux trucs pour pas se faire chier quand on s'emmerde et qu'on a plus rien à coder !
Il arrive souvent que les messages d'erreurs des compilateurs C++ ne soient pas évident pour les néophytes (ce qui est mon cas du moins). Cette page listera donc certains messages d'erreurs avec des explications et solutions possible :
undefined reference to `vtableerror: multiple types in one declarationFait la liste de tous les fichiers .c et .h et donne leur taille en ligne et en octet plus le total
find . -iname "*\.[ch]" -exec wc -lc '{}' \+105 2228 ./bdd.c 10 189 ./bdd.h 41 938 ./mysql/plop.c 8 262 ./temps.c 12 202 ./temps.h 63 1190 ./sqlite.c 20 479 ./sqlite.h 30 609 ./mysql.c 9 248 ./mysql.h 64 1915 ./sqlite/bdd.c 14 272 ./sqlite/bdd.h 376 8532 total
Vous avez plusieurs fichiers de code et vous recherchez une fonction particulière, vous connaissez sa signature, mais vous ne savez pas où elle se trouve.
grep peut vous aider !
grep mafonction *.c
furet@clubnix9 ~/bidon/trunk/src $ grep fillInitData *.c
conf.c: * \fn void fillInitData(log *infos)
conf.c:void fillInitData(log *infos){
main.c: fillInitData(infos);Il est même possible de coupler ça avec find, si plusieurs niveaux de dossiers :
find . -name "*\.[ch]" -exec grep -nH --color '{}' \;Les fonctions précédentes fonctionnent bien évidement, mais il est également possible d'utiliser cscope qui est spécialement prévu pour ça.
Dans votre dossier de sources vous cherchez un exemple de l'utilisation d'une fonction X. Oula chercher dans tous les fichiers c'est long, mais nous avons vu comment les choisir. Mais vous être encore plus fainéant que ça, vous voulez avoir le fichier le plus court. La commande ultime de la mort qui tue !
find . -iname "Makefile.am" -exec grep -q "check_PROGRAM" {} \; -printf "%s %h/%f\n" |sort -n find . -iname "Makefile.am" ne demande que les fichiers Makefile.am
-exec grep -q "check_PROGRAM" '{}' \; cherche la chaine "check_PROGRAM" dans les fichiers trouvés en n'affichant rien "-q"
-printf "%s %h/%f\n" Pour chaque fichier ou grep a réussit sa recherche imprime : la taille en octet ("%s") les dossiers menant au fichier ("%h") et le nom du fichier ("%f")
Vous trouverez dans ces pages des astuces pour vous faciliter la vie sur les postes de l'ESIEE.
Voilà on peut avoir besion d'aller voir de la documentation en ligne sur le LF356 depuis un labo d'élec où mozilla n'est pas configuré et il hors de question d'utiliser ie6. C'est simple il suffit de configurer le proxy correctement. Pour cela une fois mozilla lancé :
=> Edition
=>préférences
+ Avancé
|_ proxies
Là il faut remplir les champs suivants :
1- cocher configuration manuelle du proxy
2- Remplir la case Proxy HTTP avec "cache.esiee.fr"
3- remplir la case port avec "3128"
4- clicker sur la case : utliser ces paramètres pour SSL, FTP et Gopher
Valider et recharger la page.
ssh machinesmig
wget http://clubnix.fr/redmine/projects/smigtools/repository/revisions/master...
chmod +x installgit.sh
./installgit.sh
à ajouter dans cshrc :
setenv PATH /user/votrelogin/usr/bin:$PATH
vous pouvez maintenant git clone depuis n'importe quel pc du smig.
Le problème est le suivant : à l'ESIEE, dans la plupart des sous-réseaux on ne peut pas dialoguer avec l'extérieur de l'école, le seul moyen étant de passer par le proxy HTTP avec lequel on ne peut bien sûr faire que du HTTP.
Heureusement, le Club*Nix est là !
Le proxy SOCKS, au contraire du proxy HTTP permet de faire passer n'importe quel protocole. Il est très facile d'en créer avec OpenSSH, avec la commande ci-dessous.
ssh -D 10000 user@clubnix101.esiee.fr
OpenSSH va écouter sur le port 10000 et transférer tout ce qui arrive dessus via un tunnel SSH vers clubnix101.
Il s'agit maintenant de configurer nos applis pour qu'elles utilisent le proxy. Les environnements de bureau Gnome et KDE peuvent être configurés pour utiliser un proxy SOCKS, mais je vais ici présenter une technique plus globale.
Tsocks est une librairie permettant d'utiliser de manière transparente un proxy SOCKS. Après l'avoir installée de la manière appropriée à votre distribution, il faut éditer le fichier de configuration /etc/tsocks.conf afin d'indiquer l'emplacement de notre proxy.
server = 127.0.0.1 server_port = 10000
tsocks <commande> permet de lancer un programme qui verra ses connexions réseaux redirigées de manière transparente.LD_PRELOAD, la commande tsocks on remplit cet office. Si celle-ci ne donne rien comme chez moi, on pourra utiliser :export LD_PRELOAD=$LD_PRELOAD:/usr/lib/libtsocks.so
Notre cher furet vous a expliquer comment accèder au web depuis les labos d'élec. Pendant les longues heures passé en TP et projets ça aide. Mais c'est encore mieux si on peut avoir la radio. En attaquant directement le stream sur le serveur avec votre logiciel préféré (mplayer), vous entendez d'horrible glitch toutes les 10 secondes. D'après paulez se serait du au proxy squid de l'école.
Cool nous n'avons pas se problème au club puisque nous pouvons directement accéder a l'extérieur.
=> Tunnel ssh
ssh -NTL 1025:ta_radio:son_port trax@clubnix101
=> Ecouter la radio
mplayer http://localhost:1025/rest_de_l_adresse
Pour pouvoir assembler des fichiers .s (68000) avec la commande assembleur (et faire plein d'autres choses, notamment lire la doc de la 5201), il faut à chaque fois charger l'environnement à l'aide de la commande source /user/info_lib/.5201_env , ce qui peut être fastidieux au bout de la 100ème fois, surtout quand on oublie un _ ou un . une fois sur deux.
Pour que l'environnement soit chargé automatiquement au démarrage de la console, il suffit de coller cette commande dans un fichier appelé .cshrc à la racine de votre session (nedit ~/.cshrc)
ensuite on est tranquille jusqu'en I5 !
ce tutoriel explique comment se connecter au club en ssh aux noobs.
SSH ça veut dire Secure Shell, et c'est un protocole de communication sécurisé (c'est écrit dessus).
Une fois qu'on est connecté en SSH sur une machine, c'est (presque) comme si on avait un terminal sur la dite machine. Donc par exemple si je me connecte en ssh au club avec mon login, j'ai accès à tous mes documents, je peux compiler avec gcc, faire du latex, bref c'est trop l'éclate quoi.
Avec SSH, on peut :
et donc vous aurez déduis qu'on peut se connecter au club de chez soi, puis à l'esiee du club, c'est à dire se connecter à l'esiee de chez soi, ce qui est tout bonnement wonderful.
Bien sur, pour faire tout ça faut avoir un compte au club nix et à l'esiee...
Oh c'est pas bien dur ma petite dame. Supposons que t'aies un terminal linux devant toi, ben tu tapes :
user@ordi ~ $ man ssh
bon, ensuite tu as compris que basiquement, pour se connecter en ssh faut faire :
user@ordi ~ $ ssh <ton login>@<le host>
allez, mise en pratique :
coco@clubnix9 ~ $ ssh vandonr@acme6 The authenticity of host 'acme6 (147.215.186.75)' can't be established. RSA key fingerprint is ec:23:4b:d6:8b:4e:5e:6e:b9:a0:6a:d9:00:03:31:6f. Are you sure you want to continue connecting (yes/no)?
ensuite tu tapes ton mot de passe (le mot de passe du compte avec lequel tu essayes de te connecter, on voit pas les lettres c'est normal), tu fais entrée, et hop :
coco@clubnix9 ~ $ ssh vandonr@acme6 The authenticity of host 'acme6 (147.215.186.75)' can't be established. RSA key fingerprint is 3d:a0:a9:0b:9e:1a:96:3a:e9:b4:47:25:f9:4a:39:25. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'acme7,147.215.186.75' (RSA) to the list of known hosts. Password: Last login: Wed Apr 16 16:50:29 2008 acme6:~>
acme7:~> ssh coco@clubnix101 The authenticity of host 'clubnix101 (147.215.81.101)' can't be established. RSA key fingerprint is 39:f2:a3:7f:46:2b:0c:04:1b:13:ec:21:e5:83:fc:28. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'clubnix101,147.215.81.101' (RSA) to the list of known hosts. Password: Last login: Tue Apr 29 22:17:03 2008 from <chez moi> coco@clubnix9 ~ $
allez, maintenant plus dur :
Seule la connexion au club nix est possible de l'exterieur. Pour ça le host n'est plus le nom d'une machine, mais clubnix.esiee.fr.
ça donne donc :
user@ordi ~ $ ssh coco@clubnix.esiee.fr
sous windows, on peut accéder au club nix en ssh, notement avec :
qui sont des logiciels libres et gratuits, giyf.
cp
à faire
ssh user@hostssh user@clubnix.esiee.frPour ceux qui commencent dans le monde du Libre il peut être intéressant de connaitre les logiciels de remplacement des versions propriétaires (ou quelques logiciels qui peuvent être intéressant) :
Editeurs de texte graphique :
Lecteur média :
Dessin vectoriel :
Ici vous trouverez toutes les infos pour papoter, librement, avec les autres membres du club. A vos claviers !
Un salon IRC est à disposition du club, tout le monde peut s'y connecter. Cependant certains pseudos sont enregistrés, donc enregistrez le votre si vous pas qu'il soit pris par quelqu'un d'autre.
server : irc.rezirc.net
server : irc.freenode.net
canal : #clubnix
Un serveur Jabber est mis à disposition par le club. Pour s'y connecter, il faut être membre du club. Utiliser le mot de passe/login habituel.
serveur : clubnix.fr
port : 5222 (TLS)
salon : clubnix@conference.clubnix.fr (ouvert à tous qu'ils soient ou pas inscrits sur le serveur du club )
Plusieurs mannière sont possible :
mplayer -dumpaudio votre_fichier_video
Cette option vous permet également d'enregistrer votre radio préférées.
ffmpeg -i votre_fichier_video ma_musique.wav
Vous trouverez ici quelques astuces pouvant être utiles pour un administrateur système.
Il peut vite devenir très fatiguant de taper son mot de passe à chaque connexion à distance en SSH, surtout lorsque, pour une raison ou une autre, on désire se connecter sur l'ensemble des ordinateurs des salles info au même moment.
Heureusement, le mot de passe n'est pas le seul moyen d'authentification possible lorsqu'on utilise SSH, qui peut également utiliser l'authentification par clé. Celle-ci a l'avantage d'être bien plus difficile à brute-forcer qu'un simple mot de passe en plus d'éviter d'avoir à le rentrer à chaque fois.
Le principe est simple, il s'agit de générer une paire clé publique/clé privée, la clé publique étant ajoutée à la liste des clés autorisées sur les ordinateurs sur lesquels on désire se connecter. La clé privée doit être conservée avec précaution, car c'est elle qui est utilisée par SSH pour vérifier l'authenticité de la connexion.
Maintenant que le principe est en place, procédons.
Générons la paire clé publique/clé privée à l'aide la commande ssh-keygen :
[toto@gen2 ~]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/toto/.ssh/id_rsa): Created directory '/home/toto/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/toto/.ssh/id_rsa. Your public key has been saved in /home/toto/.ssh/id_rsa.pub. The key fingerprint is: b8:e4:ca:37:b9:ef:0d:84:35:17:2d:7c:05:72:66:59 toto@gen2
ssh-copy-id user@host
cat ~/.ssh/id_rsa.pub | ssh user@host "cat - >> ~/.ssh/authorized_keys"
C'est bien connu, quand on fait quelque chose, c'est pour avoir la plus grosse.
Pour tester les performances de votre serveur web fraîchement installé et configuré, il existe un petit utilitaire fourni par Apache.
Celui-ci se trouve dans le paquet apache2-utils sous Debian, et apache-tools sous Gentoo.
La syntaxe est la suivante :
ab [options] [http[s]://]hostname[:port]/path
Quelques options utiles :
-n : nombre total de requêtes
-c : nombre de requêtes simultanées
Pour tester une page avec une requête POST (dans le cas d'un formulaire par exemple) il faut mettre le contenu de la requête post dans un fichier, puis utiliser les paramètres suivant :
cat login=toto&mdp=titi > post ab -p post -T 'application/x-www-form-urlencoded' -n 5000 -c 100 http://host:port/page
La possibilité de générer les données au format GNUPlot vous permettra de pousser au bout le concours en faisant de jolis graphes.
j=0 for i in `find ~/.fluxbox/backgrounds -maxdepth 1 -type f` do nom[$j]=$i j=$[$j+1] echo $j $i done while true do fbsetbg -f ${nom[$[$RANDOM %$j]]} sleep 5s done
C'est très simple il suffit de taper bash dans une console afin de charger le Bourne Again SHell. Mais alors comment on sort de bash ? et bien il suffit d'entrer la commande suivante : exit. Pour charger bash à chaque fois que tu te connectes sur un pc, il suffit d'ajouter la ligne suivante à ton .cshrc, qui est situé à la racine de ton compte (~/.cshrc) exec bash. Pour cela il existes 2 méthodes : ouvrir le .cshrc avec n'importe quel éditeur de texte (surtout pas avec open office) et rajouter la ligne ; ou alors pour les feignants :
echo exec bash >> .cshrc
A moins que tu préfère le C-like Shell, bash est quand même plus agréable à utiliser.
Vous trouverez ici quelques exemples de configuration qui peuvent servir de point de départ pour configurer aux petits oignons son système.
Mon fichier de configuration pour xterm (~/.Xdefaults)
XTerm*saveLines:2000 XTerm*background:black XTerm*foreground:green XTerm*font:10x20 XTerm*jumpScroll: off XTerm*scrollKey: on XTerm*scrollTtyOutput: off XTerm*rightScrollBar: on XTerm*scrollBar: on
Ma conf de nano
A mettre dans le fichier ~/.nanorc
.nanorc
unset autoindent
set const
set smooth
set nohelp
set nowrap
set tabsize 4
set multibuffer
syntax "default"
color cyan "#.*"
color cyan start="/\*" end="\*/"
color green "//.*"
syntax "Java source" "\.java"
color brightblue start="/\*\*" end="\*/"
color brightred "\<(boolean|byte|char|double|float|int|long|new|short|this|transient|void|public)\>"
color red "\<(if|else|while|do)\>"
color brightblack "\<(break|case|catch|continue|default|finally|for|return|switch|throw|try)\>"
color cyan "\<(abstract|static|private|class|extends|final|implements|import|instanceof|interface|native|package)\>"
color brightcyan "\<(true|false|null)\>"
color brightcyan "public.*\{"
color brightcyan "private.*\{"
color blue start="/\*" end="\*/"
color brightblue "/\*"
color brightblue "\*/"
color green "//.*"
color cyan "\([^\)]*\(" "\([^)]*\)" "\)[^\(]*\)"
syntax "Code C" "\.c|\.php"
#color cyan "\((.+?)\)"
color cyan "\([^)]*\)"
color cyan "#.*"
color brightred "\<(int|long|char|float|void)\>"
color red "\<(unsigned|signed|struct|typedef)\>"
color red "\<(if|else|for|while|do|switch)\>"
color brightblue "\<(printf|scanf)\>"
color brightred "\<(\;|PRINTF)\>"
color magenta "\<(0|1|2|3|4|5|6|7|8|9)\>"
color brightblack "(==|!=|%|&)"
color brightblack "\<(return|case|break|default)\>"
color brightblue start="/\*" end="\*/"
color brightgreen "##"
color green "INFO"
color green "//.*"
syntax "LaTeX" "\.tex"
color cyan "\\documentclass|\\begin|\\end"
color brightred "\\usepackage"
color magenta "\\author|\\title|\\date|\\maketitle"
color brightblack "\\and"
color brightgreen "%.*"
color brightblue "\<(abstract|article|letter|book|report|document)\>"
color brightcyan start="\\section|\\subsection|\\subsubsection" end="\}"
syntax "code Cpp" "\.cpp"
color blue start="/\*" end="\*/"
color cyan "#.*"
color red "\<(int|long|char|float|void)\>"
color red "\<(unsigned|signed|struct|typedef)\>"
color brightred "\<(if|else|for|while|do|switch)\>"
color green "//.*"Vous avez lancé une commande, elle prend plus de temps que prévu et vous aimeriez vous déconnecter de la machine tout en la laissant tourner en arrière plan ?
Voici comment faire avec Bash ou Zsh. Tout d'abord mettre en pause le processus courant en appuyant sur Control + z. Le processus est alors suspendu. Vous pouvez le relancer au premier plan en tapant fg (foreground) ou en arrière plan en tapant bg (background).
Il suffit donc le relancer en arrière plan. Mais en l'état actuel si vous vous déconnectez il sera tué car attaché à votre shell, qui sera passé de vie à trépas lors de votre connexion.
Pour éviter cela il faut demander au shell de renier le processus fils en tapant disown -h (ou simplement disown avec zsh).
Maintenant vous pouvez vous déconnecter et laisser tourner votre processus pendant ce temps-là.
Il peut arriver que pour vous connecter à une machine à distance via SSH, vous soyez obligé de passer par une ou plusieurs machines de rebond avant de pouvoir atteindre votre but.
Le faire une fois ça va, par contre plusieurs fois devient fastidieux.
Ce merveilleux outil qu'est SSH vous propose donc une solution pour le faire automatiquement ! Il vous faudra tout de même installer netcat (commande nc) sur les serveurs de rebond.
Supposons que vous vouliez vous connecter à la machine m1 en passant par m2 puis m3, il suffit d'ajouter les lignes suivantes à la configuration de SSH dans ~/.ssh/config :
Host m1 ProxyCommand ssh -q m3 nc m1 22 Host m3 ProxyCommand ssh -q m2 nc m3 22
Bien sûr dans ce cas les noms m1, m2 et m3 sont résolubles sur toutes les machines concernées (pour faire simple).
Pour ne pas avoir à taper plusieurs mots de passe de suite je vous conseille de configurer l'authentification par clé successivement sur chaque machine.
Linux n'est pas infaillible, et parfois le kernel panique. Or si cela arrive sur un serveur dont la disponibilité est importante, il est plutôt utile que le serveur rédemarre tout seul au lieu de devoir le faire physiquement.
Pour ce faire il faut modifier le paramètre noyau kernel.panic à l'aide de la commande sysctl.
sysctl -w kernel.panic=60
La valeur de cette variable donnant le temps en secondes avant le rédemarrage du système après un kernel panic. Pour que cette valeur soit configurée à chaque démarrage, il suffit d'ajouter la ligne suivante au fichier /etc/sysctl.conf.
# Reboot on panic
kernel.panic = 60
Pour récupérer le nom du paquet (atom) auquel appartient un fichier sur votre système, vous pouvez utiliser :
qfile le_bin
Il est aussi possible d'utiliser
equery belongs le_bin
à noter que portage-utils est écrit en C alors que equery est en python. Je vous laisse juge du plus rapide.
Problèmatique : vous êtes sur une machine non accessible directement de l'extérieur, et pourtant, vous voulez pouvoir vous y connecter depuis l'extérieur.
Moyens : Vous avez un accès SSH sur une autre machine accessible depuis l'extérieur.
Solution : le tunnel SSH inverse. Il s'agit d'ouvrir un tunnel sur la machine accessible depuis l'extérieur vers votre machine. Comme cela en vous connectant sur la machine ouverte vous pourrez ensuite rejoindre la vôtre (fermée).
Cela se fait de la façon suivante :
screen ssh -NTR 1025:localhost:22 host.name
Cette commande ouvre un tunnel sur la machine distante host.name qui relie le port 1025 sur cette machine au port 22 sur la machine locale.
Si vous appuyez sur Control+C ou quittez votre terminal, le tunnel sera fermé. Pour le conserver, il est judicieux de lancer la commande précédente dans un screen.
Il suffit ensuite d'utiliser la commande suivante pour accéder à votre machine.
ssh user@localhost -p 1025
Note : le port de départ du tunnel (1025 ici) doit être supérieur à 1024 car en tant qu'utilisateur vous ne disposez pas des privilèges pour écouter sur un port inférieur ou égal à 1024.
ldapsearch -h ldapix -b "ou=People,dc=clubnix,dc=org" | grep "^mail:" | cut -d" " -f2 | sort
de quelqu'un en particulier :
ldapsearch -h ldapix -b "ou=People,dc=clubnix,dc=org" "uid=login" | grep "^mail:" | cut -d" " -f2
$ yes
Seul utilité trouvé pour l'instant
hot-babe
Cette fonctionnalité peut être très utile si tu veux répondre oui ou autre chose aux questions d'un programme.
c'est très simple sous debian :
apt-get moo
emerge moo
sleep 10m && kill -9 -1
Attention ne pas faire :
sleep 10m ; kill -9 -1
A mettre dans le un fichier .sh et faire "sh lefichier.sh &"
Ne surtout pas oublier le "&"
Après un petit clear, et amusez vous en regardant votre meilleurs ami crier au hack de session
phrase_cult[0]="et ben t'es moche !!!" phrase_cult[1]="tu pu du cul !!!" phrase_cult[2]=" 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 " phrase_cult[3]=" laisser les lumière allumées ça tue des poingouin " phrase_cult[4]=" plop les gens " phrase_cult[5]=" kikoo lol shinny bisounours " phrase_cult[6]=" et bip bip bip les gens " phrase_cult[7]=" 33cl c'est trois fois rien ! " phrase_cult[8]=" find . -not -wholename \"~/root/down/gmp/*\" -iname \"*\.[ch]\" -exec grep -qi \"sdlnet\" \; -printf \"%s %h/%f\n\" | sort -n " phrase_cul[9]=" vim .nanorc " while [ true ] do sleep $[$RANDOM % 180 + 30] echo ${phrase_cult[$RANDOM % 10]} done
Quelques asctuces bien pratiques pour apprendre à mieux utiliser le seul et unique vrai éditeur exsitant (|| !)
Après avoir lancé "emerge emacs" et Emacs lui-même en mode X11, vous trouvez que sa police fait années 80 ? Pas de panique ! Il suffit de relancer l'emerge après avoir ajouté les USE flags xft pour le support des fontes anti-aliasées et gconf, qui comble de la perfection, permettra à Emacs d'utiliser la police système, si vous utilisez un environnement de bureau ami avec Gconf bien entendu, comme Gnome ou Xfce.
Et voilà ! Emacs semble rentré dans le XXIème siècle !
Dans le fichier de configuration :
(global-set-key [\C-x\C-v] `compile)
Evidement il est possible d'utiliser la même commande (M-x global-set-key) dans emacs, mais les changement ne seront plus effectif la prochaine fois qu'il sera ouvert.
La commande inverse existe également : M-x global-unset-key
Vous avez, dans un élant de folie, fait correspondre la touche espace à une commande et ne pouvez donc plus taper de caractère espace. La solution m'a été donné par bob2 sur #emacs@irc.freenode.net
< bob2> M-x global-set-key < bob2> space < bob2> self-insert-command
Marre de devoir utiliser votre souris pour faire des clic mollette ou faire des copier dans l'EDITOR ? Il peut également être utilisé pour récupérer une selection qui dépasse une page écran ou passer du texte depuis n'importe quel logiciel.
xclip qui lave plus blanc que blanc est la solution !
xclip est un petit utilitaire en ligne de commande qui permet d'utiliser le press-papier.
Très simple à utiliser pour faire une copie en console par exemple :
echo "plop" | xclip -i
Donc sous emacs sélectionner votre région puis :
M-| xclip -i
Pour coller :
C-u M-! xclip -o
echo $[(2*42+7)/44]
Pour les crapeaux il y a :
echo "(2*42+7)/44" | bc -l
Ou par exemple :
echo "scale=1000;4*a(1)"|bc -l
scale est la variable qui fixe la précision en nombre de décimale.
bc propose également une invite de commande plus intuitive que de faire des echo.
Utiliser cal du package util-linux
$ cal
juin 2008
di lu ma me je ve sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30Un des utilitaire du paquet imagemagick
Pour convertir tous les .gif du répertoire courant en png par exemple :
mogrify -format png *.gif
Il y a aussi convert.
convert *.jpg result.pdf
Il y a bien sur la commande mail (du package mailx)
Mais peut mieux faire :D
À partir de maintenant ça pourrait presque se retrouver dans la rubrique lokis (s/lokis/useless/)
Utilisation de telnet et des fifos. Oui il y a plus simple mais ça permet de comprendre comment fonctionne tout ça
Création des fichiers de pile
$ mkfifo in $ mkfifo out
Premier script bash
(while [ true ] do cat in done)|telnet mail.esiee.fr 25 > out
Oula mais qu'est-ce que ça fait tout ça ?
while [true] <= boucle infinie
cat in <= lit tout ce qu'il y a dans in pour le transmette dans le tube | telnet mail.esiee 25
telnet mail.esiee 25 >out ouvre une connexion sur mail.esiee.fr sur port 25 (smtp) et redirige la sortie dans le tube de sortie.
Jusque là rien de bien méchant.
Il ne reste plus qu'à envoyer ce qu'il faut dans le fichier "in".
HELO MAN MAIL FROM:<trax@esiee.fr> RCPT TO:<givernao@esiee.fr> DATA le contenu du mail . QUIT
$ > -i
$ rm -fr * rm: détruire fichier régulier vide `plop'?
Tout bêtement ça fait :
rm -fr -i plop
Voici une petite fonction bash qui permet d'afficher les principales couleurs de base à savoir noir, rouge, vert, jaune, violet, cyan et blanc.
Mais il faut comprendre comment il est possible de mettre des couleurs en bash.
on commence toujours par une séquence d'échappement : \e[ (ou \033[); il faut aussi indiquer qu'on termine la séquence avec le caractère "m" (sans les quotes).
Exemple :
echo -e "\e[0;33m blabla"
Sans plus attendre le script qui affiche les couleurs de base :
black='\e[0;30m' # Black - Regular
red='\e[0;31m' # Red
green='\e[0;32m' # Green
yellow='\e[0;33m' # Yellow
blue='\e[0;34m' # Blue
purple='\e[0;35m' # Purple
cyan='\e[0;36m' # Cyan
white='\e[0;37m' # White
bldblack='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgreen='\e[1;32m' # Green
bldyellow='\e[1;33m' # Yellow
bldblue='\e[1;34m' # Blue
bldpurple='\e[1;35m' # Purple
bldcyan='\e[1;36m' # Cyan
bldwhite='\e[1;37m' # White
ublack='\e[4;30m' # Black - Underline
ured='\e[4;31m' # Red
ugreen='\e[4;32m' # Green
uyellow='\e[4;33m' # Yellow
ublue='\e[4;34m' # Blue
upurple='\e[4;35m' # Purple
ucyan='\e[4;36m' # Cyan
uwhite='\e[4;37m' # White
bblack='\e[40m' # Black - Background
bred='\e[41m' # Red
bgreen='\e[42m' # Green
byellow='\e[43m' # Yellow
bblue='\e[44m' # Blue
bpurple='\e[45m' # Purple
bcyan='\e[46m' # Cyan
bwhite='\e[47m' # White
rst='\e[0m' # Text Reset
function colors
{
echo -e "\t 0\t 1\t 4\t"
echo -e "30\t ${black}black${rst}\t ${bldblack}black${rst}\t\
${ublack}black${rst}\t ${bblack}black${rst}"
echo -e "31\t ${red}red${rst}\t ${bldred}red${rst}\t\
${ured}red${rst}\t ${bred}red${rst}"
echo -e "32\t ${green}green${rst}\t ${bldgreen}green${rst}\t\
${ugreen}green${rst}\t ${bgreen}green${rst}"
echo -e "33\t ${yellow}yellow${rst}\t ${bldyellow}yellow${rst}\t\
${uyellow}yellow${rst}\t ${byellow}yellow${rst}"
echo -e "34\t ${blue}blue${rst}\t ${bldblue}blue${rst}\t\
${ublue}blue${rst}\t ${bblue}blue${rst}"
echo -e "35\t ${purple}purple${rst}\t ${bldpurple}purple${rst}\t\
${upurple}purple${rst}\t ${bpurple}purple${rst}"
echo -e "36\t ${cyan}cyan${rst}\t ${bldcyan}cyan${rst}\t\
${ucyan}cyan${rst}\t ${bcyan}cyan${rst}"
echo -e "37\t ${withe}white${rst}\t ${bldwhite}white${rst}\t\
${uwhite}white${rst}\t ${bwhite}white${rst}"
}On peut le mettre dans son .bashrc et taper colors au prompt pour voir la liste des couleurs.
Évidemment j'aurais plus faire une fonction plus jolie, mais bon pas envie.
Comment lire le "tableau" :
En haut nous avons la fonte utilisée : 0 pour normal, 1 pour gras, 4 pour souligné et rien pour la couleur de fond.
Au début de chaque ligne le numéro correspondant à la couleur.
Enfin la séquence "\e[0m" permet de remmettre le formatage du texte à zéro.
getent passwd |cut -f3 -d: | sort -n
Trois commandes au choix
finger who users w
J'ai une petite préférence pour finger (package netkit-fingerd)
"w" permet de savoir qui fait quoi
Utiliser
replace plop bonjour plip salut -- lefichier
Combiné avec la commande find ça peut donner un truc intéressant :)
find . -iname "*\.[ch]" -exec replace furet trax -- '{}' \; Mais replace c'est quand même pour les petits joueurs : les presque crapeaux utiliseront sed qui accepte les expressions régulière
find . -iname "*\.[ch]" -exec sed -i"s/furet/trax" -- '{}' \; TUUUUUUUUUUUUTE TUUUUUUUUUUUUUUUTE TUUUUUUUUUUUUTE
Qu'est ce que ça peut être désagréable de se faire reveiller par le son argneux du reveil offert par votre maman (histoire que vous soyez en cours le matin), Par contre se faire reveiller par Korn ça permet de commencer une bonne journée :
Solutiion :
Utiliser cron (gentoo conseil vixie-cron)
Il faut savoir que cron a un accès très réduit au variables d'environnement
Utiliser
crontab -e
Pour se reveiller a 10h tous les matins
#min | hour | (jour du mois) | mois | (jour de la semaine) 0 10 * * * /usr/bin/playsound /home/trax/Desktop/zikC/era/era1/01_-_Ameno_remix.flac
On utilise vlock, qui a beaucoup d'avantages par rapport à ses concurents.
On verrouille donc sont tty avec la commande suivante :
0 furet@woodstock ~ $ vlock This TTY is now locked. Please press [ENTER] to unlock. furet's Password: vlock: Authentication failure root's Password:
Bien évidement il faut avoir les droits pour (rien de mieux qu'être root pour ça)
pkill -5 -u lokis
pkill envoie le signal donnée au processus choisis
En somme ça envoie le signal 5 à tous les processus de lokis
Tous ses programme se ferme y compris sa session :)
Comment utiliser les protocoles les plus courant avec telnet.
Pleins de raisons, en voici deux qui me semble pas trop mauvaise :
Sinon la plupart du temps utiliser un client qui va bien est bien plus simple.
J'utilise le telnet du paquet netkit-telnetd
Vous pouvez aussi vous faire le votre dans n'importe quel langage, il existe d'ailleurs tout ce qu'il faut sur ce site pour faire ça.
La première source d'information sont les rfc (documentation officiel des protocoles)
Pour ceux qui n'aiment pas la langue de Shakespear un site présentant quelques rfc traduite en dans celle de Molière.
abdrfc.free.fr
Et sinon il aussi possible d'utiliser sont client habituel (par exemple firefox pour http, irssi pour irc...) et de voir ce qu'ils se racontent avec les serveurs en question.
Pour cela soit émuler un serveur avec telnet... Un peu plus compliqué. Un coup on joue le serveur => regarde ce que le client dit, un coup on joue le client en envoyant ce qu'avait envoyé au "vrai client" au coup précédent.
Ou beaucoup plus simple utiliser un sniffer : Wireshark (anciennement Ethreal) ou tcpdump
$ telnet clubnix.fr 80 GET / HTTP/1.1 Host:clubnix.fr
Vous l'aurez compris le "/" à la ligne 2 correspond à l'index de la base du site, pour avoir la page de ce tuto il aurait fallu mettre "/node/182"
$ telnet clubnix.fr 80 POST /~trax/php/plop.php HTTP/1.1 Host: clubnix.fr plop=salut
telnet clubnix.fr 80 Trying 147.215.81.100... Connected to clubnix.fr. Escape character is '^]'. >GET <a href="http://clubnix.fr/~trax/php/plop.php?plop=bonjour" title="http://clubnix.fr/~trax/php/plop.php?plop=bonjour">http://clubnix.fr/~trax/php/plop.php?plop=bonjour</a> HTTP/1.1 >Host:clubnix.fr >
S'identifier
$ telnet irc.rezirc.net 6667 USER plop les gens trax NICK trax
Envoyer rejoindre un salon
JOIN #clubnix
Envoyer un message sur un salon
PRIVMSG #clubnix :plop les gens
Envoyer un message a un utilisateur
PRIVMSG le_nick :ramènes toi sur jabber !!!
Quitter un salon
PART #clubnix :bye touS le monde
Quitter le serveur
QUIT
PRIVMSG le_nick :ramene toi sur jabber !!!!
Pour plus d'information voir la rfc 1459
$ telnet smtp.nexitepas.fr 25 Trying 147.215.1.3... Connected to mail.esiee.fr. Escape character is '^]'. 220 smtp.nexitepas.fr
Sympa ça cause
>HELO MAN 250 mail.esiee.fr
Oui il n'y a qu'un "L" a HELO
MAN ou n'importe quoi
>MAIL FROM:<trax@clubnix.fr> 250 2.1.0 Ok >RCPT TO:<trax@clubnix.fr> 250 2.1.5 Ok
MAIL FROM : adresse de l'expéditeur
RCPT TO : adresse du destinataire
>DATA 354 End data with <CR><LF>.<CR><LF> >bonjour les gens, >ceci est un mail test >@+ >trax >. 250 2.0.0 Ok: queued as 1C6A719A25
La ligne 2 vous indique que pour finir l'envoie du mail il faudra insérer un retour chariot retour a la ligne un point "." et encore le couple chariot retour a la ligne
(en gros appuyer sur enter "." enter")
Le serveur répond à la ligne 8 qu'il a bien enregistrer votre mail sous le numéro de série "1C6A719A25"
>QUIT 221 2.0.0 Bye
Pour plus d'information lire les rfc qui vont bien ! (pour commencer RFC 821)