<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Cli on FtBx.fr</title><link>https://ftbx.fr/tags/cli/</link><description>Recent content in Cli on FtBx.fr</description><image><title>FtBx.fr</title><url>https://ftbx.fr/images/placeholder-image.jpg</url><link>https://ftbx.fr/images/placeholder-image.jpg</link></image><generator>Hugo -- 0.146.6</generator><language>fr</language><copyright>2025 ftbx.fr - This work is licensed under CC BY-NC-SA 4.0</copyright><lastBuildDate>Fri, 14 Jun 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://ftbx.fr/tags/cli/index.xml" rel="self" type="application/rss+xml"/><item><title>glab CLI : gérer GitLab sans jamais ouvrir le navigateur</title><link>https://ftbx.fr/posts/glab-cli-gerer-gitlab-jamais-ouvrir-e-navigateur/</link><pubDate>Fri, 14 Jun 2024 00:00:00 +0000</pubDate><guid>https://ftbx.fr/posts/glab-cli-gerer-gitlab-jamais-ouvrir-e-navigateur/</guid><description>&lt;p>Quand tu gères 120 dépôts et que chaque action commence par
&amp;ldquo;ouvrir GitLab → Projects → chercher le projet → cliquer → &amp;hellip;&amp;rdquo;,
tu perds un temps fou. &lt;code>glab&lt;/code> remplace l&amp;rsquo;interface web pour
toutes les opérations courantes.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Installer&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">brew install glab &lt;span class="c1"># macOS&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo apt install glab &lt;span class="c1"># Linux (ou télécharger le binaire)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Authentification (une fois)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">glab auth login
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="ce-que-jutilise-souvent">Ce que j&amp;rsquo;utilise souvent&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Créer une MR depuis la branche courante&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">glab mr create --title &lt;span class="s2">&amp;#34;Fix: pipeline timeout&amp;#34;&lt;/span> --assignee @me
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Lister mes MRs ouvertes&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">glab mr list --assignee @me
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Voir le statut d&amp;#39;une pipeline&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">glab ci status --branch main
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Relancer un job spécifique&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">glab ci retry --job build
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Lister les issues&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">glab issue list --label &lt;span class="s2">&amp;#34;bug&amp;#34;&lt;/span> --assignee @me
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Créer un snippet (partage de code rapide)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">glab snippet create fichier.py --title &lt;span class="s2">&amp;#34;Debug: race condition&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="le-combo-qui-tue-avec-git">Le combo qui tue avec git&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Créer une branche, commit, push, MR en une passe&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git checkout -b fix/timeout
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git commit -am &lt;span class="s2">&amp;#34;fix: increase pipeline timeout&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git push -u origin HEAD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">glab mr create --fill &lt;span class="c1"># --fill utilise le message du commit comme titre&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="cheatsheet-glab">Cheatsheet glab&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Commande&lt;/th>
&lt;th>Équivalent UI GitLab&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>glab mr list -a @me&lt;/code>&lt;/td>
&lt;td>Merge Requests → Assignees → Moi&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>glab mr view 42&lt;/code>&lt;/td>
&lt;td>Ouvrir la MR #42&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>glab mr merge 42&lt;/code>&lt;/td>
&lt;td>Bouton &amp;ldquo;Merge&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>glab ci status&lt;/code>&lt;/td>
&lt;td>CI/CD → Pipelines&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>glab ci trace&lt;/code>&lt;/td>
&lt;td>Logs du job en cours&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>glab release create 1.0&lt;/code>&lt;/td>
&lt;td>Deploy → Releases → New release&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>glab api projects/:id&lt;/code>&lt;/td>
&lt;td>API GitLab sans curl ni token&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;code>glab api&lt;/code> est la killer feature : tu appelles l&amp;rsquo;API GitLab directement
avec ton token géré par &lt;code>glab&lt;/code>. Plus besoin de &lt;code>curl -H &amp;quot;...&amp;quot;&lt;/code>.&lt;/p></description></item><item><title>Proxmox qm : les 5 commandes qui évitent l'interface web</title><link>https://ftbx.fr/posts/proxmox-qm-es-5-commandes-qui-evitent-interface-web/</link><pubDate>Sun, 11 Feb 2024 00:00:00 +0000</pubDate><guid>https://ftbx.fr/posts/proxmox-qm-es-5-commandes-qui-evitent-interface-web/</guid><description>&lt;p>L&amp;rsquo;interface web de Proxmox est propre. Mais quand on gère plus de 10 VMs et qu&amp;rsquo;on veut automatiser, la CLI est 10 fois plus rapide. Voilà les 5 commandes
&lt;code>qm&lt;/code> que j&amp;rsquo;utilise au lieu de cliquer.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 1. Lister les VMs avec leur état&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qm list
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 2. Démarrer / arrêter / redémarrer&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qm start &lt;span class="m">100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qm stop &lt;span class="m">100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qm reboot &lt;span class="m">100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 3. Ouvrir une console série (comme le bouton &amp;#34;Console&amp;#34; dans l&amp;#39;UI)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qm terminal &lt;span class="m">100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 4. Cloner une VM (template → VM fonctionnelle en 30 secondes)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qm clone &lt;span class="m">9000&lt;/span> &lt;span class="m">101&lt;/span> --name &lt;span class="s2">&amp;#34;ma-vm&amp;#34;&lt;/span> --full
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 5. Modifier une option sans ouvrir l&amp;#39;UI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qm &lt;span class="nb">set&lt;/span> &lt;span class="m">100&lt;/span> --memory &lt;span class="m">8192&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qm &lt;span class="nb">set&lt;/span> &lt;span class="m">100&lt;/span> --cores &lt;span class="m">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qm &lt;span class="nb">set&lt;/span> &lt;span class="m">100&lt;/span> --net0 virtio,bridge&lt;span class="o">=&lt;/span>vmbr0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="le-combo-qui-automatise-tout">Le combo qui automatise tout&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Cloner un template cloud-init, personnaliser, démarrer&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qm clone &lt;span class="m">9000&lt;/span> &lt;span class="m">200&lt;/span> --name &lt;span class="s2">&amp;#34;k8s-worker-3&amp;#34;&lt;/span> --full
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qm &lt;span class="nb">set&lt;/span> &lt;span class="m">200&lt;/span> --sshkey ~/.ssh/id_ed25519.pub
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qm &lt;span class="nb">set&lt;/span> &lt;span class="m">200&lt;/span> --ipconfig0 &lt;span class="nv">ip&lt;/span>&lt;span class="o">=&lt;/span>10.0.0.203/24,gw&lt;span class="o">=&lt;/span>10.0.0.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">qm start &lt;span class="m">200&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Les 5 commandes à retenir : &lt;code>list&lt;/code>, &lt;code>start&lt;/code>, &lt;code>stop&lt;/code>, &lt;code>clone&lt;/code>, &lt;code>set&lt;/code>.
Avec ça, on fait 90% de ce qu&amp;rsquo;on fait dans l&amp;rsquo;interface web, sans
toucher la souris.&lt;/p></description></item></channel></rss>