18/09/2010

wgetpaste, de la console au pastebin

Utilisés pour le partage de logs, l’échange de patch, la diffusion de quotes, et des dizaines d’autres choses, les pastebin sont sans conteste des outils très important dans le monde des logiciels libres.

Or, la plupart d’entre nous effectuent des démarches assez fastidieuses pour mettre du contenu sur ces fameux pastebin: copier le texte, ouvrir un navigateur, aller sur le pastebin, coller le texte, récupérer l’url. Ceci est long et peu pratique. Heureusement, un logiciel libre existe pour simplifier les choses: wgetpaste.

Wgetpaste, dont le site n’est pas vraiment explicite, va vous permettre, via un pipe “|”, d’envoyer aisément le résultat d’une commande vers un pastebin, et de récupérer l’URL de destination.

En voici quelques exemples d’utilisation, qui vous parleront surement plus:

Le comportement par défault, utilisant paste.pocoo.org

Le plus simple pour émettre sur un pastebin est d’utiliser “wgetpaste”, sans options. Le service par défaut est paste.pocoo.org.

$ cat geekfault.txt | wgetpaste
Your paste can be seen here: http://paste.pocoo.org/show/263519/

De cette manière, nous avons l’URL directe où a été posté notre fichier.

Pour aller plus loin, nous pouvons donner l’option -r (“raw”) afin de recevoir l’URL du texte sans formatage ni fioriture:

$ cat geekfault.txt | wgetpaste -r
Your raw paste can be seen here: http://paste.pocoo.org/raw/263520/

Choisir un autre service de pastebin

Vous pouvez obtenir la liste des services en utilisant l’option -S

$ wgetpaste -S
Services supported: (case sensitive):
   Name:    | Url:
   =========|=================
    ca      | http://pastebin.ca/
    codepad | http://codepad.org/
    dpaste  | http://dpaste.com/
    osl     | http://pastebin.osuosl.org/
   *pocoo   | http://paste.pocoo.org/

Ensuite, vous pouvez sélectionner le service avec l’option -s

$ cat geekfault.txt | wgetpaste -s ca
Your paste can be seen here: http://pastebin.ca/1943411

La coloration syntaxique

La liste des syntaxes est disponible avec l’option -L (combinable avec l’option -s).

Voici un exemple de post d’un fichier python:

$ cat geekfault.py | wgetpaste -l Python
Your paste can be seen here: http://paste.pocoo.org/show/263529/

Aller plus loin

Bien d’autres choses sont disponibles. La liste est disponible avec l’option -h… Je vous laisse découvrir tout cela!

$ wgetpaste -h
Usage: /usr/bin/wgetpaste [options] [file[s]]

Options:
    -l, --language LANG           set language (defaults to "Plain Text")
    -d, --description DESCRIPTION set description (defaults to "stdin" or filename)
    -n, --nick NICK               set nick (defaults to your username)
    -s, --service SERVICE         set service to use (defaults to "pocoo")
    -e, --expiration EXPIRATION   set when it should expire (defaults to "1 month")

    -S, --list-services           list supported pastebin services
    -L, --list-languages          list languages supported by the specified service
    -E, --list-expiration         list expiration setting supported by the specified service

    -u, --tinyurl URL             convert input url to tinyurl

    -c, --command COMMAND         paste COMMAND and the output of COMMAND
    -i, --info                    append the output of `emerge --info`
    -I, --info-only               paste the output of `emerge --info` only
    -x, --xcut                    read input from clipboard (requires x11-misc/xclip)
    -X, --xpaste                  write resulting url to the X primary selection buffer (requires x11-misc/xclip)
    -C, --xclippaste              write resulting url to the X clipboard selection buffer (requires x11-misc/xclip)

    -r, --raw                     show url for the raw paste (no syntax highlighting or html)
    -t, --tee                     use tee to show what is being pasted
    -v, --verbose                 show wget stderr output if no url is received
        --completions             emit output suitable for shell completions (only affects --list-*)
        --debug                   be *very* verbose (implies -v)

    -h, --help                    show this help
    -g, --ignore-configs          ignore /etc/wgetpaste.conf, ~/.wgetpaste.conf etc.
        --version                 show version information

Defaults (DEFAULT_{NICK,LANGUAGE,EXPIRATION}[_${SERVICE}] and DEFAULT_SERVICE)
can be overridden globally in /etc/wgetpaste.conf or /etc/wgetpaste.d/*.conf or
per user in any of ~/.wgetpaste.conf or ~/.wgetpaste.d/*.conf.

Bon amusement!

Dans c’est article, nous n’avons utilisé que la commande “cat”. Mais ceci fonctionne avec n’importe quelle commande.

Attention! Wgetpaste ne prend en compte que ce qui sort sur la sortie standard (stdout). Pour prendre stderr en compte, vous pouvez utiliser 2>&1. Par exemple:

$ cat file_not_found 2>&1 | wgetpaste
Your paste can be seen here: http://paste.pocoo.org/show/263533/
  1. | #1

    haha, ça va *tellement* m’aider quand je casse mon système, que X se lance plus et que j’implore de l’aide via irc en tty :’)

  2. Benoit Daloze
    | #2

    Article intéressant.
    Typo dans le 2e exemple (il y a toujours les fioritures).

    Perso, je préfère largement les gist, les avantages sont innombrables:
    – éditable
    – aussi flexible qu’un repo git à 1 niveau de hiérarchie (=pas de sous-dossiers) (donc plusieurs fichiers, possibilité de cloner, de fork, de voir les diff, …),
    – appartenance à un user et donc facilement retrouvable
    – se base sur l’extension du fichier pour détecter le langage

    D’où, je trouve ce concurrent beaucoup plus intéressant:
    http://github.com/defunkt/gist
    Ça nécessite un compte GitHub, mais c’est pas vraiment un problème.

    Mais bon, si c’est vraiment juste pour mettre en ligne du texte sans format, destiné à être “jeté”, j’imagine que ce genre de service est meilleur.

  3. Benoit Daloze
    | #3

    @Benoit Daloze
    J’allais oublier: l’exécutable a aussi une longueur correcte :)

  4. | #4

    @roidelapluie: Ou alors, tu installes Cairo-Dock et tu déposes ton texte sur sur l’applet ‘Déposer pour Partager’ 😀 😛 (fonctionne aussi avec un texte ou un fichier depuis le presse papier 😉 )
    :)

    En plus, ça rend super bien Cairo-Dock (qui vient de sortir en version 2.2.0) sur Musca 😛

  5. Bourouffala Denis
    | #5

    Excuse moi mais comment l’installer ce petit logiciel ?

  6. Barul
    | #6

    @Denis: sous Gentoo il est dans portage, il doit donc être dans les repos des distirubtions..
    Sinon, en réponse à l’article, y’a aussi pastebin, non? (app-text/pastebin) Ça va paster sur pastebin.com

  7. shutdown76
    | #7

    Un petit script python http://github.com/mattoufoutu/scripts/blob/master/pydeone.py qui permet de faire l a même chose avec ideone http://www.ideone.com/

  8. Haricophile
    | #8

    J’utilise depuis longtemps pastebinit qui fait ça très bien sans que j’ai besoin de réinventer la roue avec un script python 😉
    Je n’ai rien contre la variété génétique, mais ce n’est pas très nouveau, pour ne pas dire une vieille méthode.

  1. Pas encore de trackbacks