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 `vtable
error: multiple types in one declaration
Fait 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
Exemple :
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 '{}' \;
La commande ultime :D
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.
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
et tu lis !
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 :
Tout d'abord il faut connaitre le nom d'une machine, qui sert de host. Il y a entre autres "acmeX", "geminiX", où X est un chiffre entre 1 et 12.
quand je serais re à l'école je ferai une liste plus complète des pc sshables
ensuite par exemple ça donne ça :
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)?
Là t'ecris yes et tu pose pas de questions.
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:~>
et voilà, amuse toi bien, ça marche pareil du club ou de l'esiee.
C'est le même principe, sauf qu'il y a pas le choix pour la machine, c'est clubnix101.
ça donne ça :
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
sinon...
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@host
ssh user@clubnix.esiee.fr
Si vous voulez imprimer en 5000, c'est le moment de réviser la commande lp
. Si on combine ça avec ssh et scp, on peut facilement imprimer depuis n'importe quel ordi connecté sur le réseau de l'ESIEE. Il faut savoir aussi que les ordis sur lesquels on peut se ssh sont les ordis allumés sous Linux. On a aussi besoin que ces ordis aient la bonne imprimante ajoutée (ps5003a). Pour rappel, la commande lp
s'utillise comme ça:
$ lp -d <imprimante> -o <option[=valeur]> <fichier texte, pdf, ou ps>
J'ai rajouté les options car il y en a des intéressantes comme Stapling qui permet de choisir la position des agrafes (les valeurs possible sont: "Off", "LL", "LR", "MB", "ML", "MR", "MT", "SS", "UL" et "UR"). Vous pouvez regardez les options et leurs valeurs actuelles avec la commande lpoption
ou lpoption -l
pour voir aussi toutes les valeurs possibles. Attention: une partie des options disponibles changent en fonction de l'imprimante.
Bref, trêve de bavardages, voici le script:
#!/bin/bash # http://redsymbol.net/articles/unofficial-bash-strict-mode/ set -euo pipefail IFS=$'\n\t' if [ $# -lt 2 ]; then echo "Usage: $0 <file> <login> [lp options]" exit 1 fi if [ ! -f "$1" ]; then echo "No such file: '$1'" exit 1 fi FILE=$1 LOGIN=$2 shift shift MIMETYPE="$(file -b --mime-type "$FILE")" if [[ ! ("$MIMETYPE" =~ ^text || "$MIMETYPE" == "application/pdf" || $MIMETYPE == "application/postscript") ]]; then echo "Warning: printing supported only with pdf, ps or text files." echo "Found: $MIMETYPE" echo "Continuing anyway..." echo fi BASENAME="$(basename "$FILE")" echo "Destination file? [default='~/$BASENAME']" read DESTINATION if [ -z "$DESTINATION" ]; then DESTINATION="~/$BASENAME" fi echo "Trying 5008 computers" for i in a b c d e f g h i j k l m; do HOST="pc5008${i}.esiee.fr" if scp "-o" "ConnectTimeout=1" "$FILE" "$LOGIN@$HOST:$DESTINATION"; then ssh "-o" "ConnectTimeout=1" "$LOGIN@$HOST" "lp -d ps5003a $@ $DESTINATION" break fi done
Les lignes 4 et 5 mettent Bash en mode "strict" (non officiel). Il s'agit d'options très sympas pour que le le langage soit plus strict et donc de sauver des heures de debugging. Pour plus d'informations sur comment ça marche, allez voir le site.
Les lignes de 7 à 18 vérifient simplement les arguments passés en ligne de commande et stockent le nom du fichier à imprimer et le login ESIEE.
Pour les shift
ligne 20 et 21, cela permet décaler les arguments: l'argument 1 disparaît, l'argument 2 devient l'argument 1, l'argument 3 devient l'argument 2, etc…
De la ligne 23 à 30 le script vérifie que le fichier est bien un fichier texte, pdf ou postscript mais affiche seulement un warning si ça n'est pas le cas.
De la ligne 32 à la ligne 39 le script récupère le nom de fichier (enlève le chemin s'il y est) et propose de spécifier un autre chemin pour stocker le fichier sur la machine distante
Le cœur du script est situé entre les lignes 41 à 48. On va essayer de scp le fichier sur toutes les machines situées en 5008 (pc5008a, pc5008b, pc5008c, etc…) et si jamais ça marche, on lance la commande lp
via ssh, avec les options rajoutées via la ligne de commande, qui sont représentées par la variable $@
(ce qui explique l'intérêt des deux shift
) et on sort de la boucle.
Tadaa ! La magie (qui n'est pas vraiment de la magie en fait) est faite !
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
Le fonctionnement ensuite est simple, tsocks <commande>
permet de lancer un programme qui verra ses connexions réseaux redirigées de manière transparente.
Afin que tous les programmes l'utilisent, on peut rajouter la librairie à la variable d'environnement 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
(à adapter selon l'emplacement de la librairie) .
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
Vous en avez marre de chercher comment amend un commit qui date d'il y a deux semaine?
Voici une liste (non exhaustive) des commande qui sauvent la vie (ou 3 jours de dev dont 2 a chercher la bonne commande sur internet)
Une petite commande sympa qui permet d'avoir un aperçu rapide de vos commit (et voir si vous faites des sacs de noeud avec vos branchs)
$ git log --graph --oneline --all --decorate
si vous voulez le rajouter en tant qu'alias:
$ git config --global --add alias.tree "log --graph --oneline --all --decorate" $ git tree
Et si vous voulez un format personnalisé, vous pouvez regarder dans le man de git-log
pour obtenir par exemple le nom de l'auteur et de la date en plus:
$ git log --graph --decorate --pretty=format:'%C(auto)%h %C(yellow)[ %C(bold magenta)%cn%C(reset)%C(yellow)|%C(bold white)%ar%C(reset)%C(yellow)]%C(reset)%C(auto) %d%n %s'
%C(yellow), %C(reset) %C(auto) ... : pour la couleur
%h : hash du commit
%cn : nom de l'auteur
%ar : date du commit
%d : la décoration (nom des branch qui apparaissent (peut nécessiter le --decorate))
%n : nouvelle ligne
%s : message du commit
De manière simple:
ajout d'un fichier (première fois qu'il est versionné)
git log --name-status --reverse -- "sourceFile.c" |head
suppression d'un fichier (dernière fois qu'il est versionné)
git log --name-status -- "sourceFile.c" |head
(attention toutefois, si vous n'avez pas un "D" à côté du nom (par exemple un "M") le fichier existe toujours)
et de manière compliqué:
pour avoir une vue global de tous les ajout/suppression:
affiche (en jaune) le hash du commit suivi des fichier ayant été supprimé (rouge) et ajouté (vert)
git log --name-status --pretty=format:"%C(yellow)%H%Creset" --diff-filter=AD |GREP_COLORS="mt=32" egrep --color=always "^A.*$|^" |GREP_COLORS="mt=31" egrep --color=always "^D.*$|^"
commit 589a5252b92bda5c9ab8ddde54ee96b3c185d947 Author: Nepta <nepta23@gmail.com> Date: Fri Jul 26 09:04:26 2013 +0000 added labyrinth test commit af07bcf4c1f1b60834f466c2996bdf1690f92867 Author: Nepta <nepta23@gmail.com> Date: Fri Jul 26 07:02:07 2013 +0000 fix pathFinding algorithm
oups, vous avez oublié de rajouter le fichier de test du labyrinth?
ici, c'est le dernier commit donc un simple amend suffit:
$git add labyrinthTest.c $git commit --amend
vous vous êtes rendu compte qu'en faite l'algo est pas fixé du tout ...
la solution: fixer le code, crée un nouveau commit, stash des éventuels changement non encore commiter, rebase et enfin poper ce qui à été stasher
$nano algo.c $git add algo.c $git commit -m "fix pathFinding algorithm" $git stash $git rebase --onto af07bc~1 af07bc $git stash pop
(source : http://www.haypocalc.com/blog/index.php/ )
Un peu de couleurs pour égailler vos longue soirées à coder
$ git config --global --add color.ui true $ git status
En fin de journée, ça peut être intéressant de savoir ce qui à été fait dans un projet:
$ git shortlog --since=yesterday
va vous donner un petit récapitulatif des commit de la journée, utile a faire en fin de journée pour savoir ce que les autres ont fait, ou même se rappeler ce vous avez fait dans la journée
(et l'alias:)
$ git config --global --add alias.today shortlog --since=yesterday
Bonjour à tous,
Suite à l'intro sur Git que nous avons donné le 24 octobre dernier, voici comme promis en fichier joint un petit mémento des commandes de base.
Un tutoriel plus approfondi et détaillé arrive dans les prochains mois (normalement avant janvier).
Bien sûr, si vous avez la moindre question n'hésitez pas à passer au club ou à rentrer en contact avec nous via notre page facebook !
Bons commits et à bientôt,
Kidon.
Fichier attaché | Taille |
---|---|
![]() | 173.21 Ko |
$ git grep --color=never -c 'expression' |cut -d ':' -f2 |paste -sd+ |bc
petit explicatif:
$ git grep --color=never -c 'expression'
permet de compter le nombre d’occurrence de 'expression' dans le repo courant
ensuit, un peu de traitement assez simple, on récupère juste les nombres (nombre d'occurence du mot)
cut -d ':' -f2
et enfin, pour faire la somme de tout ça, nous utilisons `bc`, une calculatrice, manque juste a rajouter un '+' entre chaque nombre et ramener ça sur une seul ligne
chose faire par `paste` (-s pour tout mettre sur une ligne, et -d+ pour remplacer les séparateur par des `+`)
paste -sd+ |bc
maintenant un peu plus complexe, je veux pouvoir juste faire:
$ git count 'expression'
juste faire un alias ne suffira pas, j'ai besoin d'un paramètre qui devra se placer au début de la ligne...
l'astuce, faire une fonction:
(ref: http://stackoverflow.com/questions/3321492/git-alias-with-positional-par...)
$ git config --global --add alias.count '!f() { git grep --color=never -c $1 |cut -d ':' -f2 |paste -sd+ |bc; }; f'
Voici un site qui répertorie par catégorie diverse fontes LaTeX :
http://www.tug.dk/FontCatalogue/
Je doit avouer que certaines fontes manuscrites (handwritten) sont très réalistes et peuvent être facilement utilisés pour faire passer des documents numériques pour des documents écrits à la main... (cf les profs qui n'acceptent que les notes de cours manuscrites en DST !)
Pour 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
Mplayer va enregisitrer le résultat dans stream.dump
Cepandant dans certains cas le fichier n'est pas lisible (cf man)
Cette option vous permet également d'enregistrer votre radio préférées.
ffmpeg -i votre_fichier_video ma_musique.wav
Voici comment générer des miniatures de site web en ligne de commande avec CutyCapt et convert :
sudo apt-get install imagemagick cutycapt
cutycapt --url=http://www.clubnix.fr --out=clubnix.png
# Exemple pour une miniature de 200x200 convert clubnix.png -resize "200x200^" -gravity NorthWest -crop 200x200+0+0 +repage mini.png
Fichier attaché | Taille |
---|---|
![]() | 33.34 Ko |
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
Il faut ensuite ajouter la clé publique aux clés autorisées sur le serveur distant.
ssh-copy-id user@host
Si la commande ssh-copy-id n'existe pas, il est possible d'utiliser la commande suivante :
cat ~/.ssh/id_rsa.pub | ssh user@host "cat - >> ~/.ssh/authorized_keys"
Et voilà !
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
ligne 5 : crée le tableau avec toutes les images (chemin)
ligne 7 : incrémente j
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
qfile fait parti de portage-utils
Il est aussi possible d'utiliser
equery belongs le_bin
equery fait partie de gentoolkit
à 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
(paquet coreutils vous devriez l'avoir celui ci)
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
sous gentoo
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]
Ca c'est pour les newbies (renvoie la valeur entière)
Pour les crapeaux il y a :
echo "(2*42+7)/44" | bc -l
(Renvoie un nombre a virgule flottante)
Ou par exemple :
echo "scale=1000;4*a(1)"|bc -l
(calcul les 1000 première décimale de pi, cf man)
Avec un peu plus de décimales ça peut faire des trucs sympa avec hot-babe (cf astuce manger du proce)
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 30
Un 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
Créer un pdf nommé result qui contient une image jpg par page, dans l'odre alphanumérique. Pratique pour réaliser des fichiers pdf à partir de scan...
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
Crée un fichier nommé "-i"
$ rm -fr * rm: détruire fichier régulier vide `plop'?
Tout bêtement ça fait :
rm -fr -i plop
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 :)
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"
devrait afficher blabla en jaune (enfin jaune c'est approximatif). Ici 0;33 correspond à la couleur jaune justement.
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.
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
qui remplacera plop par bonjour et plip par salut.
Bien sur il n'est pas obligé de mettre deux paires ; il est également possible d'en mettre plus que deux.
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:
Pour déverrouiller le tty il suffit d'entrer son password et le tour est joué.
Note :
Effacer un fichier n'est pas un gros soucis depuis une interface graphique. Par contre depuis la console c'est une autre histoire puisque les fichiers sont définitivement perdus, sans passer par la case cobeille. Je vous propose donc une commande rm un peu plus sûre, qui va déplacer les éléments dans le /tmp/ (ou tout autre dossier considéré comme dossion “poubelle”) plutôt que de les supprimer sans merci, de façon journalisée.
Le bash c'est pas mon truc. Cette fois, ce sera du perl. Pour cela il faut vérifier que perl soit bien installé (pas forcément besoin d'une version récente). On peut le vérifier par la commande suivante :
$ perl -v
Le script est fourni en pièce jointe.
Personnellement, redéfinir la commande rm ne me plaît pas trop, j'ai donc nommé le script “rl”, qui est tout aussi facile à tapper que rm et qui a le mérite de conserver ma commande rm en cas de bug caché de rl.
Par défaut rl déplace les éléments dans /tmp, qui se vide à chaque démarrage. Pour changer ce dossier, il faut modifier la ligne 5 du script :
my $trash="/tmp";
Pour faire référence à la home de l'utilisateur pour changer le dossier de destination (le dossier poubelle), je conseille de préférer l'écriture “/home/vulpo/Trash” plutôt que “~/vulpo/Trash”, cette syntaxe n'étant pas géré par le script. Exemple :
my $trash=”/home/vulpo/Trash”
Bien sûr, il faut posséder les droits d'accès en écriture sur ce dossier.
Le script se lance comme un programme ordinaire. Cependant, pour pouvoir lancer le script seulement en tappant :
$ rl dossiersaeffacer
Il faut que le PATH sache où trouver le script (normal, me direz-vous). La commande suivante indique les dossiers connus du PATH, séparés par ':' :
$ echo $PATH
Si un des dossiers connus du PATH vous est accessible, par exemple si vous avez les droits root pour écrire dans le dossier /usr/bin, c'est là qu'il faudra déplacer le script rl.
Si aucun des dossiers n'est accessible, vous devez étendre le PATH sur un autre dossier. On peut par exemple ajouter le dossier ~/Scripts au PATH, où seront déposés tous vos scripts.
$ mkdir ~/Scripts $ export PATH=~/Scripts:$PATH
Puis déplacer rl dans le dossier ~/Scripts.
Ne pas oublier de disposer des bons droits pour le script :
$ chmod /usr/bin/rl 755 #dans le cas où rl est dans /usr/bin
Sans quoi bash peut ne pas réussir à exécuter le script.
L'exécution du script est tout à fait banale. Exemples :
$ rl fichier #fonctionne aussi avec sudo $ rl test/* #le script accepte les wildcards $ rl -v test/fichier #l'option -v pour activer le mode verbose (affichage) $ rl -h #affiche l'aide
Rl est plus sécurisé que rm parce qu'il ne supprime pas les dossiers, et qu'il propose une gestion des fichiers journalisée. Si le dossier de destination n'est pas le /tmp, ou que le système n'est pas destiné à être redémarré régulièrement, il peut être judicieux d'archiver automatiquement le dossier poubelle, en couplant le script avec un cron par exemple.
Si jamais vous trouvez des bugs ou si vous avez des conseils sur le design du code, je suis tout à fait intéressé !
Fichier attaché | Taille |
---|---|
![]() | 1.73 Ko |
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
(ne pas oublier le saut de ligne a la ligne 4)
telnet clubnix.fr 80 Trying 147.215.81.100... Connected to clubnix.fr. Escape character is '^]'. >GET http://clubnix.fr/~trax/php/plop.php?plop=bonjour 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
(sans / devant le JOIN)
Envoyer un message sur un salon
PRIVMSG #clubnix :plop les gens
(les ":" servent a dire qu'il y aura plus d'un mot envoyé, pas mal de serveur font passer la phrase entière quand même)
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
Quitter
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
(les lignes précédés d'un ">" sont celles que vous devez taper, les autres sont les réponses du serveur)
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)