Administration System – Sam & Max http://sametmax.com Du code, du cul Wed, 30 Oct 2019 15:34:04 +0000 en-US hourly 1 https://wordpress.org/?v=4.9.7 32490438 Sam ne répondra plus http://sametmax.com/sam-ne-repondra-plus/ http://sametmax.com/sam-ne-repondra-plus/#comments Tue, 04 Sep 2018 01:18:35 +0000 http://sametmax.com/?p=24942 Si vous nous avez écrit un email, vous savez qu’on a tendance a être lents pour répondre. En fait, parfois plus d’un an :)

Mais que ce soit sur twitter, reddit, indexerror, mastodon, les commentaires du blog ou par email, on finit par répondre à tout le monde. Les ratés existent, mais ils sont rares. La seule catastrophe étant notre bug tracker, parce que j’en fais suffisamment au boulot pour ne pas avoir le courage de le faire sur mon temps libre.

Gérer toute cette communauté, ça a un coût. J’y ai joyeusement participé pendant toutes ces années, parce que j’aime profondément aider les gens.

Notez que je ne me prends pas pour mère Thérésa, à moins qu’elle ai déjà fait du SM et vendu du viagra illégalement. Mais donner un coup de main a toujours été quelque chose d’important pour moi.

C’est la raison pour laquelle j’aime donner des formations. Parfois gratuitement. Parfois dans le cadre associatif.

C’est la raison pour laquelle je me déplace à des confs bien loin pour donner des talks même si personne ne sait que c’est moi. Parfois je discute avec un groupe de gens enthousiastes de ce super site NSFW. C’est vrai qu’il est bien. Vous l’avez connu comment ?

C’est la raison de la qualité des articles du blog également. Je passe un temps déraisonnable à me demander comment je vais pouvoir aider au mieux le lecteur avec une explication. Il m’est arrivé plusieurs fois de passer une journée entière sur un seul article compliqué, aux dépens d’un client que j’aurais pu facturer. Si on devait chiffrer le coût de ce site, je pense que ça me paierait un joli tour du monde.

Alors oui, ça a un prix, et je l’ai payé avec plaisir. Mes amis, qui m’ont entendu cracher sur les réseaux sociaux, ont même été étonnés de voir mon investissement sur Hacker news ou Twitter, au fil des années.

En cette fin 2018, je vais changer mon implication. J’ai envie de récupérer du temps libre, diminuer la tentation des interruptions et renforcer ma capacité d’attention, ce qui veut dire trancher dans le gras des distractions. Moins de surf sans but, moins de streaming, et moins de présence en ligne.

J’ai pensé à arrêter complètement le blog, mais soyons honnête, je n’écris plus au dixième du rythme de ses débuts, donc ça ne me prend pas si longtemps. Et un article de temps en temps, c’est thérapeutique. Je pense que j’ai besoin de mon troll JavaScript annuel pour des raisons de santé.

Ce qui me prend du temps par contre, c’est tout ce qui est autour des articles.

Donc, à partir de cette semaine, je vais arrêter de répondre sur Twitter, le subreddit (qui n’a de toute façon jamais pris) et indexerror. Twitter en particulier sera donc de nouveau en sens unique, comme à nos touts débuts: je poste, et je ne réponds pas.

Pour les commentaires du blog, j’ai fermé la création de compte, et j’ai autorisé les commentaires uniquement à ceux qui avaient déjà un compte. Je ne répondrai pas pour autant, et je sais que la communauté existante ne foutra pas le bordel, tout en leur permettant de glisser les corrections des mes coquilles débiles.

Pour mastodon, je vais fermer le compte complètement. Enfin le passer en privé et l’oublier car framapiaf ne permet pas la supression. L’expérience est réussie, je pense que c’est une bonne plateforme, mais le ratio taff/retour est trop bas pour mes nouveaux objectifs.

Quant aux mails, pour le moment je garde le canal ouvert. Ce qui devrait me permettre du coup de répondre beaucoup, beaucoup plus rapidement.

Je vous aime quand même, hein.

]]>
http://sametmax.com/sam-ne-repondra-plus/feed/ 2 24942
Do you rotate ? http://sametmax.com/do-you-rotate/ http://sametmax.com/do-you-rotate/#comments Mon, 05 Mar 2018 03:29:27 +0000 http://sametmax.com/?p=24161 le log de debug du wallet de la coin smartcash, ça peut prendre par surprise.]]> L’explosion de la taille des logs a tué plus d’un serveur. Il est amusant de se dire que c’est du texte qui peut mettre à genoux un serveur de streaming vidéo avec 32 coeurs, 2To de SSD et 64 Go de RAM. Mais un bon access log non contrôlé sous nginx ou même le log de debug du wallet de la coin smartcash, ça peut prendre par surprise.

Le module logging de Python a d’excellentes options pour gérer la taille des logs, notamment le RotatingFileHandler.

Sous Linux, c’est logrotate qui fait le boulot pour le système. C’est performant, ça marche super bien, c’est hyper simple à utiliser, et c’est dispo partout.

Bref, en prod, un petit vi sur /etc/logrotate.d/ton_projet et pouf, on peut demander une rotation en 10 lignes:

/var/www/ton_projet/*.log
{
    size 100K
    daily
    rotate 5
    missingok
    notifempty
}

Y a rien à activer, un cron lance déjà logrotate tous les jours.

Par contre, si votre process utilise systemd pour démarrer, inutile de logger manuellement. Tout ce qui est sur la sortie standard est automatiquement loggué avec rotation et accessible avec un petit journalctl -u ton_process.service --since today.

Bref, attendez encore un peu avant de rajouter logstash à votre stack.

]]>
http://sametmax.com/do-you-rotate/feed/ 2 24161
NiceHash – Pump up your power, à quoi ça sert et comment ça marche ? http://sametmax.com/nicehash-pump-up-your-power-a-quoi-ca-sert-et-comment-ca-marche/ http://sametmax.com/nicehash-pump-up-your-power-a-quoi-ca-sert-et-comment-ca-marche/#comments Tue, 14 Nov 2017 11:05:59 +0000 http://sametmax.com/?p=23832 Alors c’est quoi ce « gentil hachis » dont vous parlez sur Telegram, c’est un truc de cuisine ?

« Nicehash » c’est un service de location de puissance de « hash », en gros avoir le plaisir de posséder l’équivalent de 25000 cartes graphiques pendant un moment pour miner de la cryptomonnaie.
C’est un peu la Smartbox (vous savez celle où on peut faire 200 bornes pour conduire un R8 pendant ¼ d’heure) de la crypto, mais sans sortir de chez soi, moins de plaisir, mais plus de rendement.

D’un côté Nicehash propose aux mineurs (ceux qui ont des machines qui chauffent leur maison toute la journée) de mettre ces machines en location, et d’un autre on peut participier à des enchères pour louer la puissance (additionnée) de plein de mineurs d’un coup pour devenir un moment un gros mineur bien velu.
On voit bien sur ce graphe ce que ça donne là quand un gars s’est un peu énervé pendant ½ heure

un ptit coup de nicehash ?
Sur le chan de Goldenshower.io on a l’histoire d’un gars qui a réussi à lancer ¼ d’heure de nNicehash au tout départ du BitcoinGold et en a ramassé une bonne grosse poignée à ce moment là, mais sinon de notre expérience avec le service, il est possible de faire un 10-25% de bénéfice (on achète du hashpower en BTC, on mine une monnaie, qu’on revend ensuite, et ça fait 10-25% de BTC en plus pour recommencer ).

Allons-y “gayment”! Rendez-vous sur https://www.nicehash.com/

 

On créer un compte, on valide tout ça et on passe aux choses sérieuses. Le tuto suivant décrit la méthode pour lancer un NiceHash sur la crypto Bitcoin Gold, qui est basé sur l’algo Equihash, pour d’autres cryptos il faudra choisir l’algo approprié mais pour le reste il n’y a rien à changer.

 

  1. On va dans le marketplace (place de marché)
    On sélectionne  market place
  2. On sélectionne l’algo approprié à la crypto que l’on va miner, ici pour BTG (Bitcoin Gold) on sélectionne Equihash.
    Equihash est l'algo que l'on va utiliser pour miner du BTG (Bitcoin Gold)
  3. La partie la plus importante, Il va falloir envoyer notre puissance de calcul louée sur un pool, ici sur goldenshower.io. Pourquoi celui-là et pas un autre ?
    Parce que c’est celui de Sam&Max (et des potes) , qu’on est les plus beaux et qu’on a besoin de tunes pour aller aux putes régulièrement et vous mijoter de jolis articles tous mignons.
    PArtie la plus important, setup du pool Pool Name: Golden Show (le nom de votre pool, mettez ce que vous voulez, c’est pour le reconnaître par la suite dans la liste.)
    Stratum hostname ou IP: btg.goldenshow.io
    port: 3870
    User: là il faut mettre votre addresse de Wallet BTG que vous aurez créé en suivant notre tuto précédent ici

  4. On place son Order (et oui comme à la bourse) qui va consister à acheter de la puissance de Hash à un prix fixé par vous.
    ATTENTION! Avant de placer un order il faut créditer son compte Nicehash avec des BTC (Bitcoins), car tout se paie en BTC.
    Sur la figure suivante j’ai placé un order à 0.01258 BTC.

    PRICE: par défaut un prix est suggéré , il faut regarder dans la liste des ordres à côté que vous êtes dans les bonnes valeurs, un prix trop bas et votre ordre ne passera jamais.
    LIMIT: sert à limiter la puissance de calcul envoyée dans le temps, pour les premiers essais il vaut mieux mettre une faible valeur (attention si vous mettez 0 nicehash va envoyer toute la puissance d’un coup) en cas de mauvaise configuration du pool, ça serait con d’envoyer toute la puissance sur un truc qui mine pas :)
    AMOUNT: le budget que vous voulez allouer, là aussi au départ une petite somme pour tester l’artillerie, une fois que vous êtes sûr que ça marche, vous pouvez placez un ordre plus important.

    on achète des gigoWatts Doc !!

  5. Et C’est tout ! La puissance de calcul louée sur Nicehash va être transmise au pool goldenshow.io et c’est comme si vous aviez une ferme de GPU qui mine. Elle est pas belle la vie ?
    6_MiningStart

Si vous voulez racheter de la puissance de calcul vous éditez votre order dans la liste et vous changez les valeurs appropriées.
8_If_Need_Change_Price_or_refill
Vous l’aurez compris, Nicehash permet d’avoir l’équivalent d’une immense ferme de GPUs sans les inconvenients. Pratique pour miner à la sortie d’une crypto sans avoir à setup grand chose et pour se rendre compte immédiatement de la rentabilité de minage de la monnaie concernée.
A savoir qu’en général quand une monnaie sort la difficulté est faible donc ça vaut le coup de se lancer dessus et le Nicehash est la solution la plus rapide.

Rendez-vous sur goldenshow.io, votre pool préféré pour miner (pas exclu qu’on rajoute d’autres cryptos soon ^^ )

Les précédents Tutos:

http://sametmax.com/de-la-thune-avec-un-mining-pool-de-btg/

http://sametmax.com/tutorial-pour-miner-du-bitcoin-gold-btg/

]]>
http://sametmax.com/nicehash-pump-up-your-power-a-quoi-ca-sert-et-comment-ca-marche/feed/ 8 23832
Protégé jusqu’à la mort http://sametmax.com/protege-jusqua-la-mort/ http://sametmax.com/protege-jusqua-la-mort/#comments Thu, 02 Nov 2017 06:28:35 +0000 http://sametmax.com/?p=23755 Ce matin là, comme dans toutes les démos importantes avec un client, rien ne marchait. D’abord la multiprise, puis la prise Ethernet physique, puis la connexion elle-même. Pour faire bonne mesure, j’avais moi aussi un bug dans le code que je n’ai pu résoudre qu’en changeant de bâtiment (ne cherchez pas…).

Un moment merveilleux de communion avec tous les dev du monde qui ont connu cette expérience spirituelle de destruction de moral et de crédibilité.

Après quelques blagues et une utilisation de la partie du service qui marchait qui m’ont permis de garder la face, un nouveau problème fit son apparition.

Un fichier .odt que je générais était corrompu au téléchargement.

God left

And he’s right

Pourtant, ça marchait, j’en étais certain.

Aucune erreur. Rien. Tout était nickel de bout en bout. Sur ma machine, tout va bien. Sur les leurs, plantage direct de Libre Office.

Je change de navigateur sur mon laptop ou leurs tours. Queud.

Je change d’OS. La même.

Avec CURL ? Zob.

Et puis je note un truc étrange : la taille du fichier n’est pas la même sur leur machine. Elle change à chaque putain de téléchargement.

Je reste un instant interloqué. Et par “un instant interloqué” j’entends 2h surcaféine à trafiquer sur 3 machines différentes toutes les hypothèses tordues possibles, frénétiquement, et la bave aux lèvres.

Quand soudain l’idée me vint. La grâce divine.

Jesus saves

Jesus saves. For later.

Je désactive leur antivirus.

Miracle, ça marche.

Karspersky protégeait leurs machines jusqu’à la mort.

Je ne sais pas ce qui se passait dans sa petite tête, mais il lobotomisait de quelques Ko tous les documents, en mode frappe préventive américaine. Peu importe, leur admin n’aurait de toute façon pas été capable de corriger le problème.

La solution est de se passer des forces de l’ordre et faire justice soit même : tout foutre en SSL pour que le petit salopiot arrête de mettre son nez dans mes paquets. Ils sont sur un intranet. Avec un VPN. Mais fuck, ils seront bien protégés.

Something queer this way come

Also, openssl -days 10000000

]]>
http://sametmax.com/protege-jusqua-la-mort/feed/ 15 23755
Regrouper ses fichiers de settings avec stow http://sametmax.com/regrouper-ses-fichiers-de-settings-avec-stow/ http://sametmax.com/regrouper-ses-fichiers-de-settings-avec-stow/#comments Fri, 06 Oct 2017 08:24:03 +0000 http://sametmax.com/?p=23681 .machins. Par exemple le .bashrc pour la config du bash, le .mozilla qui contient toutes vos données Firefox, le .ssh avec toutes vos clés privées, le .local/share/virtualenvs avec les envs virtuels Python créés par pew ou .config/sublime-text-3 pour la configuration de Sublime text, etc.]]> Sous Linux, le dossier utilisateur est blindé de fichiers de configuration. Les fameux .machins. Par exemple le .bashrc pour la config du bash, le .mozilla qui contient toutes vos données Firefox, le .ssh avec toutes vos clés privées, le .local/share/virtualenvs avec les envs virtuels Python créés par pew ou .config/sublime-text-3 pour la configuration de Sublime text, etc.

Au final, voici tous les fichiers de conf qui sont importants pour moi de près ou de loin:

├── .autoenv
├── .bashrc
├── .config
│   ├── autostart
│   ├── Code
│   ├── copyq
│   ├── fish
│   ├── gtg
│   ├── liferea
│   ├── pulse
│   ├── stremio
│   ├── sublime-text-3
│   ├── transmission
│   ├── user-dirs.dirs
│   ├── user-dirs.locale
│   ├── variety
│   ├── VeraCrypt
│   ├── Zeal
│   └── zim
├── .django-completion.bash
├── .editorconfig
├── .git-aware-prompt
├── .git-completion.bash
├── .gitconfig
├── .gitignore
├── .git-prompt.sh
├── .git.scmbrc
├── .jupyter
├── .lastpass
├── .liferea_1.8
├── .local
│   └── share
        ├── gtg
        ├── keyrings
        ├── liferea
        ├── omf
        ├── TowerFall
        ├── virtualenvs
        └── Zeal
├── .mozilla
├── .netrc
├── .oh-my-zsh
├── .openambit
├── .pypirc
├── .scmbrc
├── .scm_breeze
├── .sshplus
├── .vscode
│   └── extensions
└── .zshrc

Quand on bidouille, on les change souvent. On les backup aussi, pour pouvoir les porter d’un laptop à un autre, les synchroniser, les uploader sur un serveur ou les récup lors d’une réinstallation. Parce que quand on a tuné ses terminaux et éditeurs aux petits oignons, on a pas envie de recommencer à poil.

Pour bien faciliter les choses, ils sont éparpillés un peu partout, dans des sous-dossiers différents.

Et je sais pas quel vil individu a suggéré une fois que faire une partition séparée pour /home était la solution de Skippy à tous les soucis, mais perso, ça me cause plus de bugs qu’autre chose quand on change de versions d’OS.

Bref, laissez tomber vos vieilles croyances issues de charlatans de sectes. Moi, j’ai vu la lumière (lien de don bitcoin en bas à droite de la page), et elle s’appelle GNU stow.

Stow est un vieil utilitaire (donc sagesse millénaire des anciens, vous pouvez avoir confiance, prenez ce cristal aussi il est en promo), qui est grosso merdo un ln -s récursive. C’est-à-dire que ça fait des symlinks des fichiers et des dossiers que vous lui passez.

On peut l’utiliser pour plein de choses, mais l’usage sacré implique le sacrifice d’une vierge à Max, puis de déplacer tous les fichiers de settings qu’on souhaite gérer dans un seul dossier.

Par exemple, moi j’ai:

/home/user/church/settings/

    ├── .autoenv
    ├── .bashrc
    ├── .config
    │   ├── autostart
    │   ├── Code
    │   ├── copyq
    │   ├── fish
    │   ├── gtg
    ...

Au lieu de les avoir éparpillées partout, toutes les brebis sont maintenant regroupées dans une seule église.

Il est très important de garder l’organisation des dossiers et des sous-dossiers d’origine. Ici vous voyez que j’ai le dossier Code, qui est le dossier de settings de VSCode. Mais il est DANS un dossier .config, car avant mon regroupement il était dans /home/user/.config/.

En revanche, il n’est pas du tout nécessaire que .config contienne tous les dossiers qu’il avait précédemment. Seuls ceux qui vous intéressent. Le reste peut rester à sa place initiale, dans le /home/user/.config/.

Donc je résume:

  • Listez les fichiers et dossiers de settings qui vous intéressent.
  • Déplacez les tous dans un dossier commun en gardant une arborescence similaire.
  • Laissez les fichiers qui ne vous intéressent pas là où ils sont.
  • Priez (une bonne pratique avant toute opération informatique).

Arrive le messie, Stow.

D’abord, il faut l’installer, mais comme c’est un outil vénérable, il est dans les dépôts. Sous Ubuntu, le psaume “apt install stow” fera l’affaire.

Ensuite, on prêche. Je me perds dans mes propres paraboles, mais les voies du seigneur sont impénétrables, contrairement à celles d’Abella Anderson. Bref on demande à stow de traiter récursivement tout le contenu du dossier settings qui est dans /home/user/church afin de le linker vers /home/user/:

stow -d /home/user/church -t /home/user/ settings

Stow va prendre récursivement tous les dossiers qui sont dans /home/user/church/settings, et les comparer à ceux dans /home/user. Si ils existent, il va ne rien faire, mais si ils n’existent pas, il va créer un lien vers chacun de ceux manquants. Pour les fichiers, si ils n’existent pas, il va créer un lien, sinon il va vous afficher une erreur, afin de ne pas écraser quelque chose d’important et vous signalez qu’il y un souci.

Le but de tout ça ?

Pour votre système et tous vos logiciels, ça ne change rien. Ils vont tomber sur les liens et avoir l’impression que tous les fichiers de configs sont à leur place et vont continuer à fonctionner dans la joie et le gospel.

Et pour vous, ben vous avez un seul endroit où tous les fichiers importants sont regroupés. Plus besoin de les chercher. Facile à backuper et à restaurer. On peut même tout foutre sous Git.

Loué soit le sauveur.

Vive moi.

]]>
http://sametmax.com/regrouper-ses-fichiers-de-settings-avec-stow/feed/ 15 23681
“BlockingIOError: [Errno 11] Resource temporarily unavailable” pour Python 3.6 http://sametmax.com/blockingioerror-errno-11-resource-temporarily-unavailable-pour-python-3-6/ http://sametmax.com/blockingioerror-errno-11-resource-temporarily-unavailable-pour-python-3-6/#comments Tue, 28 Feb 2017 09:39:18 +0000 http://sametmax.com/?p=22573 un bug assez vicieux qui ne se manifestait que sous certaines conditions, généralement dans un daemon sur un serveur, et en important certains modules qui finissent par déclencher par réaction en chaîne l'usage de random. ]]> La toute première version de Python 3.6 avait un bug assez vicieux qui ne se manifestait que sous certaines conditions, généralement dans un daemon sur un serveur, et en important certains modules qui finissent par déclencher par réaction en chaîne l’usage de random.

django est concerné.

On tombait dessus généralement assez tard, à la mise en prod, avec un message cryptique:

 
BlockingIOError: [Errno 11] Resource temporarily unavailable 
  
 The above exception was the direct cause of the following exception: 

Traceback (most recent call last): 
   .... <- des imports de votre code qui ne font rien de mal
   File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 36, in  
     import email.parser 
   File "/usr/local/lib/python3.6/email/parser.py", line 12, in  
     from email.feedparser import FeedParser, BytesFeedParser 
   File "/usr/local/lib/python3.6/email/feedparser.py", line 27, in  
     from email._policybase import compat32 
   File "/usr/local/lib/python3.6/email/_policybase.py", line 9, in  
     from email.utils import _has_surrogates 
   File "/usr/local/lib/python3.6/email/utils.py", line 28, in  
     import random 
   File "/usr/local/lib/python3.6/random.py", line 742, in  
     _inst = Random() 
 SystemError:  returned a result with an error set 

Cela a été corrigé rapidement, et le binaire patché ajoute juste un “+” à sa version:

$ python --version
Python 3.6.0+

En théorie vous ne pouvez pas tomber dessus, tous les liens de téléchargement ont été mis à jour, les distributions ont changé leurs dépôts, etc.

Mais hier je me suis fait bien niqué, et j’ai perdu 1h à debugguer cette surprise qui n’avait aucun sens (puisque mon code allait bien) : les bugs dans les binaires officiels sont rares et c’est le dernier endroit où je cherche.

En effet, certaines sources non-officielles pour installer Python n’ont pas été mises à jour, et c’est le cas du très populaire PPA deadsnakes.

Si vous avez installé Python 3.6 en faisant :

sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python3.6

vous l’avez dans le cul.

Il existe un PPA plus à jour si vous avez besoin de corriger le tir :

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6

Donc si vous avez compilé Python à la main ou utilisé un PPA, assurez-vous bien d’avoir la bonne version, et sinon upgradez. En attendant j’ai un bug report à faire à deadsnakes

]]>
http://sametmax.com/blockingioerror-errno-11-resource-temporarily-unavailable-pour-python-3-6/feed/ 6 22573
Passer son compte linux en superuser postgres http://sametmax.com/passer-son-compte-linux-en-superuser-postgres/ http://sametmax.com/passer-son-compte-linux-en-superuser-postgres/#comments Fri, 15 Jan 2016 15:27:22 +0000 http://sametmax.com/?p=17820 psql pour faire de l'admin il faut se connecter avec ce user.]]> Dans la config par défaut, les roles postgres matchent les utilisateurs système sous Linux. Au départ, le seul super utilisateur est “postgres”, et à chaque fois qu’on veut lancer psql pour faire de l’admin il faut se connecter avec ce user.

Pour se simplifier la vie en dev:

# on se log come "postgres"
sudo -i -u postgres # sous les debian likes. sinon "su" marche aussi
# on créé un utilisateur
createuser --interactive # et on dit "oui" quand il demande de créer un super user
# on créé une db à son nom
createdb ton_username

Et voilà, on peut utiliser psql depuis son compte.

]]>
http://sametmax.com/passer-son-compte-linux-en-superuser-postgres/feed/ 5 17820
Mon prompt bash est tout cassé ! http://sametmax.com/mon-prompt-bash-est-tout-casse/ http://sametmax.com/mon-prompt-bash-est-tout-casse/#comments Thu, 14 Jan 2016 09:43:33 +0000 http://sametmax.com/?p=17806 Ça m’était déjà arrivé plusieurs fois après avoir ajouté mon env virtuel et ma branch git dans mon prompt : soudainement il se met à faire n’importe quoi. Des mixes de caractères, des sauts de ligne qui se font pas, la fusion de la ligne de commande sur elle-même.

Inutilisable.

Aujourd’hui plutôt que de subir le problème, j’ai cherché une solution, et pouf : quand on utilise des couleurs dans son prompt, il faut entourer tout le balisage de [].

Mais le balisage qui colore le prompt est composé de séquences d’échappements, qui contiennent aussi [], donc il faut mettre des anti-slash.

Du coup on passe de ça :

export PS1="\[\033[01;34m\]\$(basename '$VIRTUAL_ENV')\e[0m $PS1"

à :

export PS1="\[\033[01;34m\]\$(basename '$VIRTUAL_ENV')[\e[0m] $PS1"

à la solution qui marche :

export PS1="\[\033[01;34m\]\$(basename '$VIRTUAL_ENV')\[\e[0m\] $PS1"

Évidemment à appliquer à tous les codes d’échappement chelou qu’on a réparti un peu partout.

J’ai un tampon prêt à tirer pour le premier qui me parle de zsh.

]]>
http://sametmax.com/mon-prompt-bash-est-tout-casse/feed/ 24 17806
On a tenté de nous hacker 0bin http://sametmax.com/on-a-tente-de-nous-hacker-0bin/ http://sametmax.com/on-a-tente-de-nous-hacker-0bin/#comments Sun, 20 Dec 2015 09:36:38 +0000 http://sametmax.com/?p=17160 En me baladant dans l’arbo de 0bin.net pour retirer un dox qu’on m’avait signalé je suis tombé sur un dossier au nom bizarre :

# ls -l
total 4
4 drwxr-xr-x 7 root root 4096 sept. 24  2014 --

Hum, voilà qui n’est pas pratique à analyser depuis le bash. Et pourquoi j’ai ce dossier-là d’ailleurs ?

Regardons ce qu’il y a dedans :

# python -c "import os; os.rename('--', "strange_dir")"
# ls strange_dir/
3Q  Dk  k5  Oh  -u

Oh, y a un dossier nommé “-u”…

A ce stade-là, j’ai juste supprimé le truc.

Et j’ai réalisé : on crée les dossiers de l’arbo en fonction du nom du paste, qui est une clé générée côté client, et donc fournie par un code JavaScript non trusté.

Du coup l’attaqueur nous a sans doute passé une commande bash comme nom de fichier. J’imagine, espérant qu’on fabriquait le fichier avec une exécution shell. Comme on utilise le module os pour le faire, je pense que ça n’a eu aucun impact.

J’espère :)

]]>
http://sametmax.com/on-a-tente-de-nous-hacker-0bin/feed/ 8 17160
Désactiver un service dans Ubuntu 14.04 http://sametmax.com/desactiver-un-service-dans-ubuntu-14-04/ http://sametmax.com/desactiver-un-service-dans-ubuntu-14-04/#comments Tue, 25 Aug 2015 11:25:59 +0000 http://sametmax.com/?p=16801 Quand on installe un service, Ubuntu le lance automatiquement, et installe de quoi le faire démarer à chaque boot de la machine.

Si c’est votre machine de dev, vous ne voulez peut être pas qu’Apache, Nginx, Redis, MySQL, ElasticSearch, Solr, Supervisor, Postgres, Docker, et MongoDB soient up à chaque fois tous en même temps alors que vous voulez juste vous palucher sur youjizz.

La plupart des scripts de démarrage sont dans /etc/initd.d:

ls /etc/init.d
acpid           brltty             grub-common  lpd         pppd-dns      resolvconf   skeleton           unattended-upgrades
anacron         console-setup      halt...

Mais ces scripts sont lancés parce qu’ils sont symlinkés dans un des répertoires /etc/rcX:

ls /etc/rc*.d/*apache*
/etc/rc0.d/K80apache2  /etc/rc5.d/K80apache2  /etc/rc6.d/K80apache2

Ouai, j’ai encore des clients qui utilisent apache. Certains utilisent même Tomcat.

Pour désactiver le démarrage automatique, vous pouvez essayer bourinement la suppression des liens :

sudo rm $(ls /etc/rc*.d/*apache*) 

Ça marche.

Solution plus pratique, utiliser la commande update-rc.d, qui n’est pas faite pour l’utilisation par les humains, mais fuck it :

sudo update-rc.d -f apache2 remove

Ça supprime aussi tous les liens. sudo update-rc.d -f apache2 disable devrait le faire moins bourinement mais ne marche pas sur ma machine.

Pour inverser la tendance :

sudo update-rc.d apache2 defaults

(ou enable si par miracle ça marche pour vous)

Enfin, si le cœur vous en dit:

sudo update-rc.d -f apache2 remove
sudo sysv-rc-conf

Vous donnera une joli interface curse pour le faire plus visuellement.

]]>
http://sametmax.com/desactiver-un-service-dans-ubuntu-14-04/feed/ 11 16801