<?xml
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>Tech de Gamuza</title>
	<link>https://tech.gamuza.fr/</link>
	
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://tech.gamuza.fr/spip.php?id_rubrique=1&amp;page=backend" rel="self" type="application/rss+xml" />




<item xml:lang="fr">
		<title>One line pour mise &#224; jour Composer des sous-dossiers d'un r&#233;pertoire</title>
		<link>https://tech.gamuza.fr/One-line-pour-mise-a-jour-Composer-des-sous-dossiers-d-un-repertoire.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/One-line-pour-mise-a-jour-Composer-des-sous-dossiers-d-un-repertoire.html</guid>
		<dc:date>2024-08-25T12:10:11Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>



		<description>&lt;p&gt;Script bash mono-ligne (&#034;one line&#034;) pour faire un &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;composer install&lt;/code&gt; dans tous les sous-dossiers d'un r&#233;pertoire&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-scripts-et-commandes-sh-.html" rel="directory"&gt;Scripts sh&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;strong&gt;M&#233;thode&lt;/strong&gt; : &#034;boucler&#034; dans la liste des sous-dossiers pour faire le &lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;composer install&lt;/code&gt; dans chacun d'eux si il poss&#232;de un fichier &lt;strong&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;composer.json&lt;/code&gt;&lt;/strong&gt;.&lt;br class='autobr' /&gt;
Afin de suivre le d&#233;roulement du processus on fait afficher chaque dossier mis &#224; jour.&lt;br class='autobr' /&gt;
Ce qui donne donc :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='4' class='spip_cadre spip_cadre_block' dir='ltr'&gt;for i in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls ./&lt;/code&gt;;do if [ -e $i/composer.json ]; then echo &#034;&#034;; echo $i; cd $i; composer install; cd ../; fi; done&lt;/textarea&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>One line pour conna&#238;tre la branche Git des repos dans les sous-dossiers d'un r&#233;pertoire</title>
		<link>https://tech.gamuza.fr/One-line-pour-connaitre-la-branche-Git-des-repos-dans-les-sous-dossiers-d-un.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/One-line-pour-connaitre-la-branche-Git-des-repos-dans-les-sous-dossiers-d-un.html</guid>
		<dc:date>2024-03-29T16:38:48Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>


		<dc:subject>script sh</dc:subject>

		<description>&lt;p&gt;Script bash mono-ligne (&#034;one line&#034;) pour faire un &lt;i&gt;git branch -a&lt;/i&gt; et r&#233;cup&#233;rer uniquement la branche active dans tous les sous-dossiers d'un r&#233;pertoire&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-scripts-et-commandes-sh-.html" rel="directory"&gt;Scripts sh&lt;/a&gt;

/ 
&lt;a href="https://tech.gamuza.fr/+-script-sh-+.html" rel="tag"&gt;script sh&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;on boucle dans les sous-dossiers d'un r&#233;pertoire et on joue un &lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;git branch -a&lt;/code&gt; : la branche active est pr&#233;fix&#233;e par une &lt;strong&gt;*&lt;/strong&gt; ce qui permet de n'afficher qu'elle via un &lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;|grep ...&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ce qui donne donc :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='4' class='spip_cadre spip_cadre_block' dir='ltr'&gt;for i in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls ./&lt;/code&gt;;do echo &#034;&#034;; echo $i; cd $i; git branch -a |grep '*'; cd ../; done&lt;/textarea&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Utiliser la commande &#034;gpg&#034; dans des scripts</title>
		<link>https://tech.gamuza.fr/Utiliser-la-commande-gpg-dans-des-scripts.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/Utiliser-la-commande-gpg-dans-des-scripts.html</guid>
		<dc:date>2023-06-30T19:29:37Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>



		<description>&lt;p&gt;&#034;gpg&#034; est la commande utilis&#233;e pour le chiffrage de fichiers avec GnuPG : quelques syntaxes de base pour utilisation dans des scripts bash d'automatisation de t&#226;ches&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-scripts-et-commandes-sh-.html" rel="directory"&gt;Scripts sh&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;strong&gt;NB :&lt;/strong&gt; ici (dans le cadre d'automatisation avec des scripts bash) on envisage uniquement une utilisation de GnuPG avec &lt;strong&gt;chiffrement sym&#233;trique&lt;/strong&gt; = avec une phrase de passe et non pas le syst&#232;me &#034;classique&#034; cl&#233; priv&#233;e/publique.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Chiffrer un fichier avec un mot de passe :&lt;/h2&gt;
&lt;p&gt;Chiffrer &lt;strong&gt;le_fichier.txt&lt;/strong&gt; en &lt;strong&gt;le_fichier.txt.gpg&lt;/strong&gt; avec le mot de passe &lt;strong&gt;MonSuperPass_123&lt;/strong&gt; :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;gpg -c --yes --batch --passphrase=MonSuperPass+123 le_fichier.txt&lt;/textarea&gt;
&lt;p&gt;&lt;strong&gt;Explication des options :&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;strong&gt;c&lt;/strong&gt; : chiffrement sym&#233;trique (= utilisation d'une passe-phrase)&lt;/li&gt;&lt;li&gt; &lt;strong&gt;batch&lt;/strong&gt; : mode non interactif (= ne rien demander : cf option &#034;yes&#034;)&lt;/li&gt;&lt;li&gt; &lt;strong&gt;yes&lt;/strong&gt; : r&#233;pondre &#034;oui&#034; aux &#233;ventuelles questions&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;spip&#034;&gt;D&#233;chiffrer un fichier avec son mot de passe :&lt;/h2&gt;
&lt;p&gt;D&#233;chiffrer &lt;strong&gt;le_fichier.txt.gpg&lt;/strong&gt; avec le mot de passe &lt;strong&gt;MonSuperPass_123&lt;/strong&gt; :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;gpg --batch --passphrase=MonSuperPass+123 le_fichier.txt.gpg&lt;/textarea&gt;
&lt;p&gt;cette commande va cr&#233;&#233; le fichier &lt;strong&gt;le_fichier.txt&lt;/strong&gt;&lt;br class='autobr' /&gt;
&lt;a id=&#034;oneline&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;One line pour d&#233;chiffrer puis re-chiffrer un ensemble de fichiers :&lt;/h2&gt;
&lt;p&gt;On veut am&#233;liorer la s&#233;curit&#233; d'un ensemble de fichiers pr&#233;c&#233;demment chiffr&#233;s avec le mot de passe &lt;strong&gt;le_passe&lt;/strong&gt; en les re-chiffrant avec le mot de passe &lt;strong&gt;MonSuperPass_123&lt;/strong&gt;&lt;br class='manualbr' /&gt;(ces fichiers sont tous situ&#233;s dans le r&#233;pertoire o&#249; est lanc&#233; la commande)&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='7' class='spip_cadre spip_cadre_block' dir='ltr'&gt;for i in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls *.gpg&lt;/code&gt;;do echo $i;tmp=&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;echo $i | sed 's/.gpg/ /g'&lt;/code&gt;;gpg --batch --passphrase=le_passe $i &amp;&amp; gpg -c --yes --batch --passphrase=MonSuperPass_123 $tmp &amp;&amp; rm $tmp; done&lt;/textarea&gt;&lt;hr&gt;&lt;h2 class=&#034;spip&#034;&gt;R&#233;f&#233;rences :&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Man page de la commande &lt;strong&gt;gpg&lt;/strong&gt; : &lt;a href=&#034;https://man.docs.euro-linux.com/EL%207/man-pages-fr/gpg.1.fr.html&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://man.docs.euro-linux.com/EL%207/man-pages-fr/gpg.1.fr.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt; Le manuel officiel de GnuPG : &lt;a href=&#034;https://www.gnupg.org/gph/fr/manual.html&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://www.gnupg.org/gph/fr/manual.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>One line pour mise &#224; jour Git des sous-dossiers d'un r&#233;pertoire</title>
		<link>https://tech.gamuza.fr/One-line-pour-mise-a-jour-Git-des-sous-dossiers-d-un-repertoire.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/One-line-pour-mise-a-jour-Git-des-sous-dossiers-d-un-repertoire.html</guid>
		<dc:date>2023-05-18T14:08:15Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>



		<description>&lt;p&gt;Script bash mono-ligne (&#034;one line&#034;) pour faire un &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;git pull&lt;/code&gt; dans tous les sous-dossiers d'un r&#233;pertoire&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-scripts-et-commandes-sh-.html" rel="directory"&gt;Scripts sh&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Si ce n'est qu'il faut &#034;boucler&#034; dans la liste des sous-dossiers pour faire le &lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;git pull&lt;/code&gt; dans chacun d'eux, la complication suppl&#233;mentaire est de v&#233;rifier qu'ils sont bien des dossiers &#034;Git&#034; (c'est &#224; dire qu'ils ont eux-m&#234;me un sous-dossier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;.git&lt;/code&gt;).&lt;br class='autobr' /&gt;
Afin de suivre le d&#233;roulement du processus on fait afficher chaque dossier mis &#224; jour.&lt;br class='autobr' /&gt;
Ce qui donne donc :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;for i in `ls ./`;do if [ -d $i/.git ]; then echo &#034;&#034;; echo $i; cd $i; git pull; cd ../; fi; done &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>liste_ransomware</title>
		<link>https://tech.gamuza.fr/liste_ransomware.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/liste_ransomware.html</guid>
		<dc:date>2022-04-26T07:41:12Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Christophe</dc:creator>



		<description>
&lt;p&gt;liste_des_ransomwares \.zcrypt$ \.R5A$ \.ecc$ \.ezz$ \.crypt$ \.encrypted$ \.encrypted$ \.crinf$ \.frtrss$ \.crjocker$ \.ecc$ \.CTBL$ \.CTBL2$ \.locked$ \.HA3$ \.0x0$ \.bleep$ \.1999$ \.bleep$ \.locked$ \.hydracrypt_ID_*$ \.keybtc@inbox_com$ \.locky$ \.magic$ \.LOL !$ \.ENC$ \.POSHKODER$ \.rdm$ \.rrk$ \.vscrypt$ \.infected$ \.korrektor$ \.bloc$ \.sanctioned$ \.pzdc$ \.good$ \.supercrypt$ \.ecc$ \.ezz$ \.exx$ \.xyz$ \.zzz$ \.aaa$ \.abc$ \.ccc$ \.vvv$ \.xxx$ \.ttt$ \.micro$ \.unbrecrypt_ID_*$ (&#8230;)&lt;/p&gt;


-
&lt;a href="https://tech.gamuza.fr/-scripts-et-commandes-sh-.html" rel="directory"&gt;Scripts sh&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;liste_des_ransomwares&lt;br class='autobr' /&gt;
\.zcrypt$&lt;br class='autobr' /&gt;
\.R5A$&lt;br class='autobr' /&gt;
\.ecc$&lt;br class='autobr' /&gt;
\.ezz$&lt;br class='autobr' /&gt;
\.crypt$&lt;br class='autobr' /&gt;
\.encrypted$&lt;br class='autobr' /&gt;
\.encrypted$&lt;br class='autobr' /&gt;
\.crinf$&lt;br class='autobr' /&gt;
\.frtrss$&lt;br class='autobr' /&gt;
\.crjocker$&lt;br class='autobr' /&gt;
\.ecc$&lt;br class='autobr' /&gt;
\.CTBL$&lt;br class='autobr' /&gt;
\.CTBL2$&lt;br class='autobr' /&gt;
\.locked$&lt;br class='autobr' /&gt;
\.HA3$&lt;br class='autobr' /&gt;
\.0x0$&lt;br class='autobr' /&gt;
\.bleep$&lt;br class='autobr' /&gt;
\.1999$&lt;br class='autobr' /&gt;
\.bleep$&lt;br class='autobr' /&gt;
\.locked$&lt;br class='autobr' /&gt;
\.hydracrypt_ID_*$&lt;br class='autobr' /&gt;
\.keybtc@inbox_com$&lt;br class='autobr' /&gt;
\.locky$&lt;br class='autobr' /&gt;
\.magic$&lt;br class='autobr' /&gt;
\.LOL !$&lt;br class='autobr' /&gt;
\.ENC$&lt;br class='autobr' /&gt;
\.POSHKODER$&lt;br class='autobr' /&gt;
\.rdm$&lt;br class='autobr' /&gt;
\.rrk$&lt;br class='autobr' /&gt;
\.vscrypt$&lt;br class='autobr' /&gt;
\.infected$&lt;br class='autobr' /&gt;
\.korrektor$&lt;br class='autobr' /&gt;
\.bloc$&lt;br class='autobr' /&gt;
\.sanctioned$&lt;br class='autobr' /&gt;
\.pzdc$&lt;br class='autobr' /&gt;
\.good$&lt;br class='autobr' /&gt;
\.supercrypt$&lt;br class='autobr' /&gt;
\.ecc$&lt;br class='autobr' /&gt;
\.ezz$&lt;br class='autobr' /&gt;
\.exx$&lt;br class='autobr' /&gt;
\.xyz$&lt;br class='autobr' /&gt;
\.zzz$&lt;br class='autobr' /&gt;
\.aaa$&lt;br class='autobr' /&gt;
\.abc$&lt;br class='autobr' /&gt;
\.ccc$&lt;br class='autobr' /&gt;
\.vvv$&lt;br class='autobr' /&gt;
\.xxx$&lt;br class='autobr' /&gt;
\.ttt$&lt;br class='autobr' /&gt;
\.micro$&lt;br class='autobr' /&gt;
\.unbrecrypt_ID_*$&lt;br class='autobr' /&gt;
\.R16M01D05$&lt;br class='autobr' /&gt;
\.xrtn$&lt;br class='autobr' /&gt;
\.encrypt$&lt;br class='autobr' /&gt;
HELP_TO_SAVE_FILES.txt&lt;br class='autobr' /&gt;
BitCryptorFileList.txt&lt;br class='autobr' /&gt;
BUYUNLOCKCODE&lt;br class='autobr' /&gt;
YOUR_FILES_ARE_ENCRYPTED.HTML&lt;br class='autobr' /&gt;
Coin.Locker.txt&lt;br class='autobr' /&gt;
DECRYPT_INSTRUCTIONS.HTML&lt;br class='autobr' /&gt;
ReadDecryptFilesHere.txt&lt;br class='autobr' /&gt;
HOW_DECRYPT.TXT&lt;br class='autobr' /&gt;
READ IF YOU WANT YOUR FILES BACK.HTML&lt;br class='autobr' /&gt;
GetYouFiles.txt&lt;br class='autobr' /&gt;
HOW TO DECRYPT FILES.HTML&lt;br class='autobr' /&gt;
DECRYPT_INSTRUCTION.TXT&lt;br class='autobr' /&gt;
HELP_DECRYPT.TXT&lt;br class='autobr' /&gt;
HELP_YOURFILES.HTML&lt;br class='autobr' /&gt;
HowDecrypt.gif&lt;br class='autobr' /&gt;
Decrypt All Files *.bmp&lt;br class='autobr' /&gt;
cryptinfo.txt&lt;br class='autobr' /&gt;
DECRYPT_Readme.TXT.ReadMe&lt;br class='autobr' /&gt;
qwer.html&lt;br class='autobr' /&gt;
qwer2.html&lt;br class='autobr' /&gt;
Hellothere.txt&lt;br class='autobr' /&gt;
FILESAREGONE.TXT&lt;br class='autobr' /&gt;
HOW TO DECRYPT FILES.TXT&lt;br class='autobr' /&gt;
DECRYPT_Readme.TXT.ReadMe&lt;br class='autobr' /&gt;
README_DECRYPT_HYDRA_ID_*.txt&lt;br class='autobr' /&gt;
DECRYPT_YOUR_FILES.HTML&lt;br class='autobr' /&gt;
KryptoLocker_README.txt&lt;br class='autobr' /&gt;
_Locky_recover_instructions.txt&lt;br class='autobr' /&gt;
DECRYPT_Readme.TXT.ReadMe&lt;br class='autobr' /&gt;
ATTENTION.RTF&lt;br class='autobr' /&gt;
how to get data.txt&lt;br class='autobr' /&gt;
IMPORTANT READ ME.txt&lt;br class='autobr' /&gt;
UnblockFiles.vbs&lt;br class='autobr' /&gt;
YOUR_FILES.url&lt;br class='autobr' /&gt;
exit.hhr.obleep&lt;br class='autobr' /&gt;
HOW_TO_DECRYPT.HTML&lt;br class='autobr' /&gt;
HOW-TO-DECRYPT-FILES.HTML&lt;br class='autobr' /&gt;
HELP_TO_SAVE_FILES.txt&lt;br class='autobr' /&gt;
HELP_TO_SAVE_FILES.txt&lt;br class='autobr' /&gt;
HELP_TO_SAVE_FILES.txt&lt;br class='autobr' /&gt;
_H_e_l_p_RECOVER_INSTRUCTIONS+*.txt&lt;br class='autobr' /&gt;
DECRYPT_INSTRUCTIONS.HTML&lt;br class='autobr' /&gt;
README_DECRYPT_UMBRE_ID_*.txt&lt;br class='autobr' /&gt;
Help_Decrypt.txt&lt;br class='autobr' /&gt;
CryptLogFile.txt&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>R&#233;capitulatif sur les array en bash...</title>
		<link>https://tech.gamuza.fr/Recapitulatif-sur-les-array-en-bash.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/Recapitulatif-sur-les-array-en-bash.html</guid>
		<dc:date>2021-12-04T16:29:59Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>



		<description>&lt;p&gt;&lt;strong&gt;R&#233;f&#233;rence&lt;/strong&gt; : petit r&#233;sum&#233; de l'utilisation des array en bash&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-scripts-et-commandes-sh-.html" rel="directory"&gt;Scripts sh&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;comme tous les langages de programmation bash propose l'utilisation de tableaux (&lt;strong&gt;array&lt;/strong&gt;) permettant le stockage de variables dans le but de boucler dessus.&lt;br class='autobr' /&gt;
Un petit r&#233;sum&#233; de l'utilisation des array.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NB gestion des noms d'&#233;l&#233;ments de l'array avec des espaces :&lt;/strong&gt;&lt;br class='autobr' /&gt;
Bash a une variable interne &lt;strong&gt;$IFS&lt;/strong&gt; qui d&#233;termine la c&#233;sure des mots. Par d&#233;faut, elle contient &lt;espace&gt;&lt;tab&gt;&lt;newline&gt;. Il faut la mettre &#224; vide si l'on souhaite utiliser des mots avec espace dans les &#233;l&#233;ments de l'array :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='bash sans_telechargement spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;IFS=''&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Cr&#233;er un array&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='bash sans_telechargement spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;Tlegumes=(patate carotte tomate &#034;choux rouge&#034;)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Acc&#233;der &#224; un &#233;l&#233;ment d'array par son index&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='bash sans_telechargement spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;echo ${Tlegumes[2]} # tomate&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;R&#233;cup&#233;rer le nombre d'&#233;l&#233;ments d'un array&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='bash sans_telechargement spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;echo ${#Tlegumes[@]} # 4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Afficher toutes les valeurs d'un array&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='bash sans_telechargement spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;echo ${Tlegumes[*]} # patate carotte tomate choux rouge&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Boucler dans un array (simple)&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='bash sans_telechargement spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;for legume in ${Tlegumes[@]}; do echo $legume done # patate # carotte # tomate # choux\ rouge&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Boucler dans un array (avec index explicite)&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='bash sans_telechargement spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;for (( i=0; i&lt;${#Tlegumes[@]}; i++ )); do echo &#034;n&#176; $i : ${Tlegumes[$i]}&#034; done # n&#176; 0 : patate # n&#176; 1 : carotte # n&#176; 2 : tomate # n&#176; 3 : choux\ rouge&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Ajouter un &#233;l&#233;ment &#224; un array existant&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='bash sans_telechargement spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;Tlegumes+=(poireau) &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Supprimer un &#233;l&#233;ment d'un array&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='bash sans_telechargement spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;unset Tlegumes[2] # la tomate n'est pas un l&#233;gume !&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr class=&#034;spip&#034; /&gt;&lt;h2 class=&#034;spip&#034;&gt;R&#233;f&#233;rences :&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; tutoriels Bash notions de base (en anglais) : &lt;a href=&#034;https://www.tutorialkart.com/bash-shell-scripting/bash-tutorial/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://www.tutorialkart.com/bash-shell-scripting/bash-tutorial/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Ajout de texte format&#233; avec sed</title>
		<link>https://tech.gamuza.fr/Ajout-de-texte-formate-avec-sed.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/Ajout-de-texte-formate-avec-sed.html</guid>
		<dc:date>2021-03-18T23:12:19Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>



		<description>&lt;p&gt;&lt;strong&gt;But de la commande :&lt;/strong&gt; utiliser &lt;strong&gt;sed&lt;/strong&gt; pour ajouter un contenu textuel &#224; un point pr&#233;cis d'un fichier (d&#233;termin&#233; par un motif de regexp)&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-scripts-et-commandes-sh-.html" rel="directory"&gt;Scripts sh&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;La commande &lt;strong&gt;sed&lt;/strong&gt; permet de prendre le contenu d'un fichier et de l'ins&#233;rer dans un autre avec la commande &lt;strong&gt;r&lt;/strong&gt; : exemple d&#233;taill&#233;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Situation de d&#233;part&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; tous les fichiers de vhost (situ&#233;s dans &lt;strong&gt;/etc/apache2/sites-available&lt;/strong&gt;) d'un serveur apache ont en commun d'avoir au moins une directive &lt;strong&gt;Directory&lt;/strong&gt; de la forme : &lt;textarea readonly='readonly' cols='40' rows='7' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;Directory &#034;/var/www/le-site-a-toto.com/html&#034;&gt; Options FollowSymLinks AllowOverride All Order allow,deny Allow from all &lt;/Directory&gt;&lt;/textarea&gt;&lt;/li&gt;&lt;li&gt; pour passer les vhosts en PHP FPM on souhaite ajouter les lignes suivantes apr&#232;s le &lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;&lt;/Directory&gt;&lt;/code&gt; : &lt;textarea readonly='readonly' cols='40' rows='8' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;FilesMatch \.php$&gt; # SetHandler &#034;proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost&#034; SetHandler &#034;proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost&#034; # SetHandler &#034;proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost&#034; &lt;/FilesMatch&gt;&lt;/textarea&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;spip&#034;&gt;Commande de base&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; puisque le contenu &#224; ins&#233;rer doit conserver le formatage, il n'est pas possible d'utiliser un &#034;simple&#034; &lt;br class='manualbr' /&gt;&lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;sed 's/&#224; remplacer/le remplacement/g'&lt;/code&gt; &lt;br class='manualbr' /&gt;on va donc cr&#233;er un fichier &lt;strong&gt;fic.txt&lt;/strong&gt; qui contiendra le contenu de remplacement.&lt;/li&gt;&lt;li&gt; la commande sed pour modifier le fichier &lt;strong&gt;100_le-site-a-toto.com.conf&lt;/strong&gt; sera donc : &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;sed -i -e '/&lt;\/Directory&gt;/ r fic.txt' 100_le-site-a-toto.com.conf&lt;/textarea&gt;
&lt;p&gt;&lt;strong&gt;D&#233;tail :&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;-i&lt;/code&gt; : option pour modifier le fichier directement&lt;/li&gt;&lt;li&gt; &lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;/&lt;\/Directory&gt;/&lt;/code&gt; : l'expression r&#233;guli&#232;re qui est recherch&#233;e pour d&#233;terminer o&#249; doit se faire l'insertion du contenu suppl&#233;mentaire&lt;/li&gt;&lt;li&gt; &lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;r fic.txt&lt;/code&gt; : commande pour l'insertion du contenu du fichier lorsque le motif de l'expression r&#233;guli&#232;re est trouv&#233;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;spip&#034;&gt;Traiter l'ensemble des fichiers du dossier&lt;/h2&gt;
&lt;p&gt;Une boucle &lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;for/do/done&lt;/code&gt; va permettre de traiter tous les fichiers du dossier :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='3' class='spip_cadre spip_cadre_block' dir='ltr'&gt;for i in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls *.conf&lt;/code&gt;; do sed -i -e '/&lt;\/Directory&gt;/ r fic.txt' $i; done&lt;/textarea&gt;&lt;h2 class=&#034;spip&#034;&gt;R&#233;f&#233;rences :&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; m&#233;mo rapide de toutes les astuces d'&#233;critures de sed : &lt;a href=&#034;https://www.commentcamarche.net/faq/6699-sed-trucs-et-astuces&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://www.commentcamarche.net/faq/6699-sed-trucs-et-astuces&lt;/a&gt;&lt;/li&gt;&lt;li&gt; utilisation d'un fichier comme cha&#238;ne rempla&#231;ante : &lt;a href=&#034;https://stackoverflow.com/a/26773903&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://stackoverflow.com/a/26773903&lt;/a&gt;&lt;/li&gt;&lt;li&gt; le fonctionnement d&#233;taill&#233; de sed et en particulier de toutes les commandes : &lt;a href=&#034;https://www.commentcamarche.net/faq/9536-sed-introduction-a-sed-part-i&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://www.commentcamarche.net/faq/9536-sed-introduction-a-sed-part-i&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;M&#233;mo :&lt;/strong&gt; la commande pour 2 remplacements diff&#233;rents en fonction du nombre de tabulations (\t) avant le Directory :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='4' class='spip_cadre spip_cadre_block' dir='ltr'&gt;for i in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls *.conf&lt;/code&gt;;do sed -i -e '/^\t&lt;\/Directory&gt;/ r fic.txt' -e '/^\t\t&lt;\/Directory&gt;/ r fic2.txt' $i;done&lt;/textarea&gt;
&lt;p&gt;&lt;i&gt;...et hop ! 100 vhost modifi&#233;s en une petite commande :-)&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Convertir en minuscules tous les noms des fichiers d'un dossier</title>
		<link>https://tech.gamuza.fr/Convertir-en-minuscules-tous-les-noms-des-fichiers-d-un-dossier.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/Convertir-en-minuscules-tous-les-noms-des-fichiers-d-un-dossier.html</guid>
		<dc:date>2020-09-07T17:04:18Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>



		<description>&lt;p&gt;&lt;strong&gt;But de la commande :&lt;/strong&gt; transformer tous les noms des fichiers d'un dossier en minuscules (nom du fichier et extension)&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-scripts-et-commandes-sh-.html" rel="directory"&gt;Scripts sh&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;On utilise la commande bash &lt;strong&gt;tr&lt;/strong&gt; (translate) pour cette op&#233;ration :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='4' class='spip_cadre spip_cadre_block' dir='ltr'&gt;for f in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls ./&lt;/code&gt;; do mv -- &#034;$f&#034; &#034;$(tr [:upper:] [:lower:] &lt;&lt;&lt; &#034;$f&#034;)&#034; ; done&lt;/textarea&gt;
&lt;p&gt;(le sens de l'&#233;criture de la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;[:upper:] [:lower:]&lt;/code&gt; est tout &#224; fait contre-intuitif...)&lt;/p&gt;
&lt;hr class=&#034;spip&#034; /&gt;
&lt;p&gt;source : &lt;a href=&#034;https://stackoverflow.com/questions/20253584/linux-rename-files-to-uppercase&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://stackoverflow.com/questions/20253584/linux-rename-files-to-uppercase&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Utiliser la commande &#034;tar&#034;</title>
		<link>https://tech.gamuza.fr/Utiliser-la-commande-tar.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/Utiliser-la-commande-tar.html</guid>
		<dc:date>2020-03-19T11:57:25Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>


		<dc:subject>commande sh</dc:subject>

		<description>&lt;p&gt;&#034;tar&#034; est la commande utilis&#233;e pour la compression de dossiers ou de fichiers : quelques syntaxes types&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-scripts-et-commandes-sh-.html" rel="directory"&gt;Scripts sh&lt;/a&gt;

/ 
&lt;a href="https://tech.gamuza.fr/+-commande-sh-+.html" rel="tag"&gt;commande sh&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Compresser un dossier (fichier) :&lt;/h2&gt;
&lt;p&gt;Compresser &lt;strong&gt;le_dossier&lt;/strong&gt; en &lt;strong&gt;nom_archive.tar.gz&lt;/strong&gt; avec &lt;strong&gt;gzip&lt;/strong&gt; :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;tar -czf nom_archive.tar.gz le_dossier/&lt;/textarea&gt;
&lt;p&gt;&lt;strong&gt;Explication des options :&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;strong&gt;c&lt;/strong&gt; : cr&#233;ation d'une nouvelle archive&lt;/li&gt;&lt;li&gt; &lt;strong&gt;z&lt;/strong&gt; : algorithme de compression &lt;strong&gt;gzip&lt;/strong&gt;&lt;/li&gt;&lt;li&gt; &lt;strong&gt;f&lt;/strong&gt; : pr&#233;ciser le nom du fichier de sortie&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Variantes :&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; on peut ajouter l'option &lt;strong&gt;v&lt;/strong&gt; pour avoir le listing des fichiers au fur et &#224; mesure de la compression (peut ralentir l'op&#233;ration) : &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;tar czvf nom_archive.tar.gz le_dossier/&lt;/textarea&gt;&lt;/li&gt;&lt;li&gt; utiliser l'option &lt;strong&gt;j&lt;/strong&gt; &#224; la place de &lt;strong&gt;z&lt;/strong&gt; pour utiliser algorithme de compression &lt;strong&gt;bzip&lt;/strong&gt; (&#224; priori plus performant) : &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;tar cjf nom_archive.tar.gz le_dossier/&lt;/textarea&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Options suppl&#233;mentaires :&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; exclure un dossier &lt;strong&gt;a_exclure&lt;/strong&gt; de l'archive compress&#233;e : &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;tar --exclude &#034;a_exclure&#034; -czf nom_archive.tar.gz le_dossier/&lt;/textarea&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;spip&#034;&gt;D&#233;compresser une archive :&lt;/h2&gt;
&lt;p&gt;D&#233;compresser l'archive &lt;strong&gt;nom_archive.tar.gz&lt;/strong&gt; (dans le dossier o&#249; elle est stock&#233;e) :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;tar -xf nom_archive.tar.gz&lt;/textarea&gt;
&lt;p&gt;&lt;strong&gt;Option :&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;strong&gt;x&lt;/strong&gt; : extraction depuis l'archive&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Variante :&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; utiliser l'option &lt;strong&gt;C&lt;/strong&gt; pour indiquer le dossier dans lequel faire l'extraction : &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;tar xf nom_archive.tar.gz -C le_dossier/&lt;/textarea&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr&gt;&lt;h2 class=&#034;spip&#034;&gt;R&#233;sum&#233; :&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;zip : unzip : decompacte .zip zip sss.zip fichier : compacte .zip gzip : tar.gz tar -zcvf tuto.tar.gz tuto/ : compression tar -zxvf tuto.tar.gz : decompression bzip2 : tar.bz2 (plus lent mais compresse mieux) tar -jcvf tuto.tar.bz2 tuto/ : compression tar -jxvf tuto.tar.bz2 : decompression bzip2 : (mono-fichier = sans tar) bzip2 mon_fichier.txt : compression bzip2 -dk mon_fichier.txt.bz2 : d&#233;compression en conservant les droits (-d) TAR Archiver : tar vcf nom_archive.tar nom_dossier_&#224;_archiver Desarchiver : tar vxf nom_fichier.tar -C dossier_destination&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&lt;h2 class=&#034;spip&#034;&gt;R&#233;f&#233;rences :&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a href=&#034;https://doc.ubuntu-fr.org/tar&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://doc.ubuntu-fr.org/tar&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://debian-facile.org/doc:systeme:tar&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://debian-facile.org/doc:systeme:tar&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>gpg crypter / decrypter un fichier</title>
		<link>https://tech.gamuza.fr/gpg-crypter-decrypter-un-fichier.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/gpg-crypter-decrypter-un-fichier.html</guid>
		<dc:date>2018-04-12T10:44:22Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Christophe</dc:creator>



		<description>&lt;p&gt;Crypter / D&#233;crypter un fichier en lui passant un mot de passe en ligne de commande&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-scripts-et-commandes-sh-.html" rel="directory"&gt;Scripts sh&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Crypter&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='bash spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;gpg -c --batch --passphrase mon_mot_de_passe mon_super_fichier.txt&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;D&#233;crypter&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='bash spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;gpg --batch --passphrase mon_mot_de_passe mon_super_fichier.txt.gpg&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
