Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

nombre réponses : 25

#0 Re : -1 »  fil pour elleji » Le 19/11/2017, à 10:18

kholo
Réponses : 548

salut,
ça c'est une bonne nouvelle...
prends mon tuto de post install et applique ce qui est nécessaire à ton usage...
j'ai plein d'autres trucs sympas si ça t’intéresse...

#1 Re : -1 »  Plus d'accès à mon serveur local » Le 20/11/2017, à 16:27

kholo
Réponses : 157

@Louis23
comme on comprend pas bien tes retours, je te remet les liens à tester :
http://localhost
http://localhost/phpmyadmin

#2 Re : -1 »  Accès distant pour remmina ou alternative Teamviewer » Hier à 08:57

kholo
Réponses : 7

salut LukePerp,
un bouton et ça roule, le rêve...
voilà comment je vois le bouzin :
ce qui fait la différence dans tous ces systèmes sont ceux avec et sans serveur central.
la prise de contrôle en soit on sait faire.
encore que... (vnc, XDMCP X11vnc)
en local, j'utilise X2go mais j'en ai jamais fait de tuto
quand on ajoute la traversée des pare feux et des box, c'est autre chose.
pour ça, soit tu dédis des ports et il faut fignoler la sécurité (pare feux, limitation, port knoking,...)
soit tu passes par le port 80 voire 443 (plutôt 443) mais il faut un serveur central pour sécuriser les transactions.
bon, sinon, cette questions est récurrente...
un peu de lecture

#3 Re : -1 »  [ Résolu ] - Partage de fichier en local, ubuntu vers windows 7 » Le 20/11/2017, à 16:23

kholo
Réponses : 25

salut,
très intéressante, cette discussion de fond...
j'essaie aussi d’inciter à l'utilisation de  ssh (sftp), plutôt que samba (les c****)
mais je ne m'avance pas plus car cela nécessite comme samba, d'un travail intelligent de droits pour limiter les accès.
Pour ssh, le mieux est de créer un utilisateur et / ou un groupe spécifique au partage puis un petit boulot sur les ACL pour ne pas avoir toutes les portes ouvertes à ce partage...
donc pas simple en prod, même si c'est parfait pour un petit partage maison... et autres avantages et inconvénients pour samba...

je laisse par défaut samba aux windoziens... et je regarde ailleurs...
que voulez vous ma p'tite dame, tout part en sucette !

#4 Re : -1 »  [ Résolu ] - Partage de fichier en local, ubuntu vers windows 7 » Le 21/11/2017, à 09:12

kholo
Réponses : 25

@yuksel :
je t'invite à te promener dans mes tutos wink
ssh et nautilus
pour créer un dossier de partage
Gérer un réseau familial avec des droits (ACL) sur du Ext4
tu trouveras des solutions génériques dans ces pages

pour ton cas sftp ;
attention maux de tête
tu dois créer un compte pour la personne avec qui tu désires faire des partages puis créer un groupe que tu ajoutes à chaque utilisateur et tu ajoutes le groupe du nom de chaque utilisateur que tu ajoutes pour y avoir un accès complet.
j'explique ; j'ajoute toto sur le PC de titi :

sur le PC de titi :
d'abord installer le service ssh  (à ne faire qu'une fois)

sudo apt install openssh-server

le partage général (à ne faire qu'une fois)

sudo groupadd partage
sudo usermod -a -G partage $USER

on 'sécurise' le dossier personnel de titi (à ne faire qu'une fois)

sudo setfacl -dRm 0:--- $HOME

pour ajouter toto (4 lignes)

sudo useradd toto --create-home --gid partage
sudo passwd toto
sudo usermod -a -G toto $USER
sudo setfacl -dRm g:partage:rwx /home/toto

toto aura un dossier perso sur le PC de titi
dans lequel il est possible à titi de copier, déplacer, supprimer, créer des liens, changer les droits.
toto n'a pas accès à grand chose comme les différents disques montés (si c'est bien fait) ou clés USB montées par l'utilisateur et bien sur rien de titi, de root ou de sudoer.
toto devra connaître d'adresse ip de ce PC depuis le serveur avec (sur le PC de titi)

ifconfig

pour mon explication, si je trouve 192.168.1.115

Sur le PC de toto :
les connexions se font avec

ssh toto@192.168.1.115
ssh -X toto@192.168.1.115

ou dans un navigateur de fichier  :

sftp://toto@192.168.1.115/home/toto

NB : ctrl + d pour ajouter un dossier aux favoris d'un navigateur de fichiers (comme pour internet)

on peut ajouter un 'raccourcis' sur le client (PC de toto)
pour s'éviter de taper l'adresse IP à chaque fois
-> dans /etc/hosts du client ajouter une ligne par serveur du type
IPserveur nomSimplifié ; par exemple :
(nano ou vi vim gedit leafpad...)

sudo nano /etc/hosts

ajouter

192.168.1.115    pctiti

et toto se connecte avec par exemple :

ssh toto@pctiti

ou dans un navigateur de fichier  :

sftp://toto@pctiti/home/toto

pour finir, pour accéder à un serveur sftp depuis Windows :
filezilla ou winscp

#5 Re : -1 »  [ Résolu ] - Partage de fichier en local, ubuntu vers windows 7 » Le 21/11/2017, à 11:00

kholo
Réponses : 25

@rogn... je suis partisan du moindre effort mais devoir installer nmap, me souvenir d'une fonction de plus
et comprendre la sortie peu rebuter les plus débutants... ifconfig est plus compréhensible par tous...
mais c'est toujours bien de rappeler nmap !
sinon

nmap -sT 192.168.1.1

ne me parle que de ma box
je l'ai plutôt comme ça :

nmap 192.168.1.0/24

0/24 pour toutes les adresses 192.168.1.x

@maxire ok chroot, je ne connais que vaguement et pas cet usage... plus qu'à ajouter cette partie en lieu et place dans mon explication... tu t'y colles ?
donc, en définitive, tu remplaces ma ligne setfacl de toto

sudo setfacl -dRm g:partage:rwx /home/toto

et ça rend l'autre ligne caduque ?

sudo setfacl -dRm 0:--- $HOME

quant à avahi... intéressant... oui ça simplifie les choses...
manpage de sshd_config

#6 Re : -1 »  [ Résolu ] - Partage de fichier en local, ubuntu vers windows 7 » Hier à 08:24

kholo
Réponses : 25

@yuksel : je pense que tu as tout compris
as tu trouvé une solution...
laquelle ?
si tu as un peu de temps pourras tu mettre tes retours ici. merci

#7 Re : -1 »  donner droits d'installation » Le 21/11/2017, à 07:59

kholo
Réponses : 14

salut,
A la place de

# ajouter ces deux lignes en collant le chemin copié et remplace le nom d'utilisateur
UserName ALL=NOPASSWD: /path of the command to/apt update
UserName ALL=NOPASSWD: /path of the command to/apt install

echo "# ajouté $(date)
# https://forum.ubuntu-fr.org/viewtopic.p … #p21828407
$USER ALL=NOPASSWD: $(whereis apt | cut -d' ' -f2) update
$USER ALL=NOPASSWD: $(whereis apt | cut -d' ' -f2) install" | sudo tee /etc/sudoers.d/custom
NB : copier coller d'un coup

désolé, visudo semble incontournable...

du coup, j'explique ;

UserName ALL=NOPASSWD: /path of the command to/apt update
UserName ALL=NOPASSWD: /path of the command to/apt install

NB : triple clic pour sélectionner une ligne ici puis copier avec ctrl + c
ctrl + alt + t pour ouvrir un terminal
puis ctrl + maj + v pour coller dans un terminal

dans ces lignes il faut adapter UserName et  /path of the command to/apt
donc il faut remplacer
UserName par le résultat de la commande

echo $USER

et remplacer  /path of the command to/apt par  le résultat de la commande

whereis apt | cut -d' ' -f2

#8 Re : -1 »  ouvrir le terminal d'un processus » Le 19/11/2017, à 11:24

kholo
Réponses : 3

salut,
screen est une solution. cela crée un processus sur lequel tu peux te brancher et débrancher ponctuellement.

si c'est un script tu peux ajouter une option status dans le code qui renverra des infos :

monScript status

tu peux aussi faire un tail sur un fichier log :

un_fichier="/ce/que/tu/veux.log"
tail -f -n 1 $un_fichier | while read une_phrase ;
do
   echo -e "lu : \n$une_phrase"
done

NB : pour ajouter un journal dans le code :

echo "des trucs et des $variables" >> $un_fichier

si tu donnes plus d'infos, on pourra peut être d'aider à faire un truc sur mesure

#9 Re : -1 »  ouvrir le terminal d'un processus » Le 21/11/2017, à 07:39

kholo
Réponses : 3

le script lance le serveur de jeux, qui lui meme ce lance dans un terminal.

si le serveur est un programme compilé, on ne peut pas le modifier ; ce que tu appelles un terminal
est certainement une fenêtre de sortie
si le serveur est un script, tu peux mettre le nez dedans et ajouter une routine qui route les sorties vers un fichier que tu peux consulter en temps réel

le programme peut aussi créer ce fichier (mais comme je ne sais pas quel service tu utilises, je ne peux pas t'en dire plus)

#10 Re : -1 »  [tuto] 16.04 - Installation Apache Mysql PHP phpmyadmin (+ vidéo) » Le 20/11/2017, à 10:20

kholo
Réponses : 84

salut,
j'ai repris le "topic" qui fini par l'ajout d'une librairie...
dès le tuto de Rufus il y a ces ajouts de dépendances que j'ai reporté et qu'on doit trouver
quelqu'en soit la version... un peu comme si on devait patcher les méta-paquets...
Le but de mon fil est d'en finir avec ça... qu'on fasse un tuto "fé com'ça !" qui amène un système dans un état qu'on connaisse pour ajouter ensuite les droits étendus, la sécurité, des sites.
je fais tout ça sans toucher à un seul fichier système !

la prochaine étape est de le faire et est donnée par tamarou même si tous les dossiers pointent vers /var/www/ au lieu de /srv/www (comme je met un lien pour /var/www c'est pas trop grave...)
d'ailleurs,
faut il adapter la doc pour ajouter voire mettre en avant /srv ?
à quel point /var/www est il déprécié ?

#11 Re : -1 »  [tuto] 16.04 - Installation Apache Mysql PHP phpmyadmin (+ vidéo) » Le 20/11/2017, à 11:46

kholo
Réponses : 84

ok merci pour le retour,
faut que je me mette à 17.10... et 18...
une fois fais je revaliderai tout ça...
je rajoute déjà un lien vers ton commentaire

#12 Re : -1 »  Travailler sur deux ordinateurs (portable et fixe) » Le 17/11/2017, à 13:58

kholo
Réponses : 13
sucarno a écrit :

salut,

Quelqu'un a déjà essayé d'installer linux sur un DD externe ?

quelle drole de question...
à mon tour,... peut on installer linux sur un des ordinateurs de Ariane ?

sinon pour répondre,... oui et sur une disquette, un lecteur zip, des clé USB...
et donc ?
j'avance sur l'idée : se trimballer avec son Ubuntu avec la vitesse de l'USB en goulot d'étranglement...
les galères entre les machines en 32 bits et celles en 64, ou même les machines en x86, en arm, en atom,...
c'est faisable, et même en optimisé, mais de là à l'expliquer et le démocratiser... malheureusement !

#13 -1 »  [tuto bash] dossiers fichiers et listes ; lecture de web radios vlc » Le 15/11/2017, à 13:04

kholo
Réponses : 6

bonjour à tous,
aujourd'hui je joue avec des listes...
du code vaut mieux que de longs discours,

#!/bin/bash
# ----------------------------------------------
nomlogiciel="${0##*/}"
FONCTION="un logiciel de lecture de 'radios'
NB ces 'radios' sont des liens lancés par vlc"
VERSION="0.019"
# NOTES DE VERSIONS
# ----------------------------------------------
# 
# ----------------------------------------------
echo "lancement $nomlogiciel..."

# nautilus "$PWD" ; exit 0

# catch CTRL-C
trap "echo ''; echo 'sortie avec CTR-C. on quitte' ; sleep 2 ; exit 1" 2

# TODO : tester les dépendances
# check_dependances () {
# vlc nautilus trap sleep read cat
	# }

# compteur de temps pour le log 
START=$(date +%s.%N)

charger_radios_csv () {
	# local nom_tmp
	local tete="chargement des radios"
	NOM_RADIO=()
	FREQUENCE=()
	local ligne 

	local l=0
	while read ligne
	do
		IFS=';' read NOM_RADIO[$l] FREQUENCE[$l] <<<"$ligne"
		echo -en "\r$tete : ${NOM_RADIO[$l]}"
		sleep .01 # pour prendre le temps de voir le chargement
		((l++))
	done < "$1"
	nbre_radios=$(($l-2))
	nbre_page_radio=$(( 1+$nbre_radios/10 ))

	echo "$nbre_radios radio(s) chargée(s)..."
	}
remplir_radios_csv () {
echo "NOM_RADIO;FREQUENCE
432Hz Radio;http://100radio-albi.ice.infomaniak.ch/100radio-albi-128.mp3
4U Radios - All Funky Classics;http://streaming.radionomy.com/AxelAime432Hz
666;http://streaming.radionomy.com/4U-Funky-Classics
Addict Alternative;http://radio666.net:8000
Addict Lounge;http://stream1.addictradio.net/addictalternative.mp3
Addict Rock;http://stream1.addictradio.net/addictlounge.mp3
Addict Star;http://stream1.addictradio.net/addictrock.mp3
Ado FM;http://stream1.addictradio.net/addictstar.mp3
Aleo;http://start-adofm.ice.infomaniak.ch/start-adofm-high.mp3
Aligre FM (Paris. Aligre FM);http://vt-net.org:8056
Alouette;http://aligrefm.org/aligrefm.m3u
Alpes 1 Gap;http://alouette.ice.infomaniak.ch/alouette-high.mp3
Alpes 1 Grenoble;http://alpes1gap.ice.infomaniak.ch/alpes1gap-high.mp3 
Alta Canzona Corsa;http://alpes1grenoble.ice.infomaniak.ch/alpes1grenoble-high.mp3
Alta Frequenza;https://altacanzona.streamakaci.com/altacanzona.mp3
Aufilduson80s;https://altafrequenza.streamakaci.com/altafrequenza.mp3
Arvorig FM;http://diffusion.lafrap.fr/alternantes.ogg
Bayou Blue Radio;http://arvorig-fm.online.stalig.net/live.mp3
Beur FM;http://bayoublueradio.com:8000/live
BFM;http://broadcast.infomaniak.ch/beurfm-high.mp3
Bide et Musique;http://bfmbusiness.cdn.dvmr.fr/bfmbusiness
Booster FM;http://relay1.bide-et-musique.com:9100
C-Lab (Radio Campus Rennes);http://giss.tv:8000/booster-tlse.mp3
CanalB;http://stream.c-lab.fr:8001/c-lab
C9 Radio;http://stream.levillage.org/canalb.m3u
Canal Sud;http://stream.c9.fr/c9.mp3
Chante France;http://91.224.148.160:8000/canalsud-live
Chérie FM;http://stream1.evasionfm.com/Chante_France
Cristal FM;http://cdn.nrjaudio.fm/audio1/fr/30201/mp3_128.mp3?origine=playerweb
Collines;http://radiocristal.ice.infomaniak.ch/radiocristal-high.mp3
Contact;http://collineslaradio.ice.infomaniak.ch/collineslaradio-128.mp3 
Couleur3.fr;http://broadcast.infomaniak.ch/radio-contact-high.mp3
DHits;http://broadcast.infomaniak.ch/rsr-couleur3-high.mp3
Divergence Fm;http://go.dhits.net/live.mp3
Djamradio ;http://ridibundus.divergence-fm.org:8000/divergence.mp3
Dogmazic/Radio Libre;http://ledjamradio.ice.infomaniak.ch/ledjamradio.mp3
Dreyeckland;http://radio.dogmazic.net:8000/stream.mp3
Euronews Radio;http://radiodreyeckland.ice.infomaniak.ch/radiodreyeckland-128.mp3
Elium Club Dance;http://euronews-01.ice.infomaniak.ch/euronews-01.aac
Europe 1;http://streaming.radionomy.com/Elium-ClubDance
Evasion FM;http://mp3lg3.scdn.arkena.com/10489/europe1.mp3
FG (FM);http://stream1.evasionfm.com/Yvelines
FG Vlaanderen Belgium;http://radiofg.impek.com/fg
FG Chic;http://radiofg.impek.com/fga
FG Club;http://radiofg.impek.com:80/fgc
FG Dance by Hakimakli;http://radiofg.impek.com/fg6
FG Non Stop;http://radiofg.impek.com/fgd
FG Starter;http://radiofg.impek.com/fge
FG Maxximun 90's;http://radiofg.impek.com:80/fgv
FG Underground;http://mp3lg3.tdf-cdn.com/6289/air_122002.mp3
FIP National;http://radiofg.impek.com/ufg
FIP Bordeaux;http://direct.fipradio.fr/live/fip-midfi.mp3
FIP Strasbourg;http://direct.fipradio.fr/live/fipbordeaux-midfi.mp3
FIP Nantes;http://direct.fipradio.fr/live/fipstrasbourg-midfi.mp3
FIP Rock;http://direct.fipradio.fr/live/fipnantes-midfi.mp3
FIP Jazz;http://direct.fipradio.fr/live/fip-webradio1.mp3
FIP Groove;http://direct.fipradio.fr/live/fip-webradio2.mp3
FIP Monde;http://direct.fipradio.fr/live/fip-webradio3.mp3
FIP Nouveautés;http://direct.fipradio.fr/live/fip-webradio4.mp3
FIP Reggae;http://direct.fipradio.fr/live/fip-webradio5.mp3
Fox Radio;http://direct.fipradio.fr/live/fip-webradio6.mp3
France 24;http://195.154.11.131:8000/foxradio
France Bleu Alsace;mms://stream1.france24.yacast.net/f24_livefr
France Bleu Elsass ;http://direct.francebleu.fr/live/fbalsace-midfi.mp3
France Bleu Armorique ;http://direct.francebleu.fr/live/Fbelsass-midfi.mp3
France Bleu Auxerre ;http://direct.francebleu.fr/live/fbarmorique-midfi.mp3
France Bleu Azur ;http://direct.francebleu.fr/live/fbauxerre-midfi.mp3
France Bleu Béarn ;http://direct.francebleu.fr/live/fbazur-midfi.mp3
France Bleu Belfort-Montbéliard ;http://direct.francebleu.fr/live/fbbearn-midfi.mp3
France Bleu Berry ;http://direct.francebleu.fr/live/fbbelfort-midfi.mp3
France Bleu Besançon ;http://direct.francebleu.fr/live/fbberry-midfi.mp3
France Bleu Bourgogne ;http://direct.francebleu.fr/live/fbbesancon-midfi.mp3
France Bleu Breizh Izel ;http://direct.francebleu.fr/live/fbbourgogne-midfi.mp3
France Bleu Champagne Ardenne ;http://direct.francebleu.fr/live/fbbreizizel-midfi.mp3
France Bleu Cotentin ;http://direct.francebleu.fr/live/fbchampagne-midfi.mp3
France Bleu Creuse ;http://direct.francebleu.fr/live/fbcotentin-midfi.mp3
France Bleu Drome Ardèche ;http://direct.francebleu.fr/live/fbcreuse-midfi.mp3
France Bleu Gard Lozère ;http://direct.francebleu.fr/live/fbdromeardeche-midfi.mp3
France Bleu Gascogne ;http://direct.francebleu.fr/live/fbgardlozere-midfi.mp3
France Bleu Gironde ;http://direct.francebleu.fr/live/fbgascogne-midfi.mp3
France Bleu Hérault ;http://direct.francebleu.fr/live/fbgironde-midfi.mp3
France Bleu Isère ;http://direct.francebleu.fr/live/fbherault-midfi.mp3
France Bleu La Rochelle ;http://direct.francebleu.fr/live/fbisere-midfi.mp3
France Bleu Limousin ;http://direct.francebleu.fr/live/fblarochelle-midfi.mp3
France Bleu Loire Océan ;http://direct.francebleu.fr/live/fblimousin-midfi.mp3
France Bleu Lorraine Nord ;http://direct.francebleu.fr/live/fbloireocean-midfi.mp3
France Bleu Maine ;http://direct.francebleu.fr/live/fblorrainenord-midfi.mp3
France Bleu Mayenne ;http://direct.francebleu.fr/live/fbmaine-midfi.mp3
France Bleu Nord ;http://direct.francebleu.fr/live/fbmayenne-midfi.mp3
France Bleu Normandie (Calvados - Orne) ;http://direct.francebleu.fr/live/fbnord-midfi.mp3
France Bleu Normandie (Seine-Maritime - Eure) ;http://direct.francebleu.fr/live/fbbassenormandie-midfi.mp3
France Bleu Orléans ;http://direct.francebleu.fr/live/fbhautenormandie-midfi.mp3
France Bleu Paris ;http://direct.francebleu.fr/live/fborleans-midfi.mp3
France Bleu Pays Basque ;http://direct.francebleu.fr/live/fb1071-midfi.mp3
France Bleu Pays d'Auvergne ;http://direct.francebleu.fr/live/fbpaysbasque-midfi.mp3
France Bleu Pays de Savoie ;http://direct.francebleu.fr/live/fbpaysdauvergne-midfi.mp3
France Bleu Périgord ;http://direct.francebleu.fr/live/fbpaysdesavoie-midfi.mp3
France Bleu Picardie ;http://direct.francebleu.fr/live/fbperigord-midfi.mp3
France Bleu Poitou ;http://direct.francebleu.fr/live/fbpicardie-midfi.mp3
France Bleu Provence ;http://direct.francebleu.fr/live/fbpoitou-midfi.mp3
France Bleu RCFM Frequenza Mora ;http://direct.francebleu.fr/live/fbprovence-midfi.mp3
France Bleu Roussillon ;http://direct.francebleu.fr/live/fbfrequenzamora-midfi.mp3
France Bleu Saint-Etienne Loire ;http://direct.francebleu.fr/live/fbroussillon-midfi.mp3
France Bleu Sud Lorraine ;http://direct.francebleu.fr/live/fbstetienne-midfi.mp3
France Bleu Toulouse ;http://direct.francebleu.fr/live/fbsudlorraine-midfi.mp3
France Bleu Touraine ;http://direct.francebleu.fr/live/fbtoulouse-midfi.mp3
France Bleu Vaucluse ;http://direct.francebleu.fr/live/fbtouraine-midfi.mp3
France Culture ;http://direct.francebleu.fr/live/fbvaucluse-midfi.mp3
France Info;http://direct.franceculture.fr/live/franceculture-midfi.mp3
France Inter;http://direct.franceinfo.fr/live/franceinfo-midfi.mp3
France Musique;http://direct.franceinter.fr/live/franceinter-midfi.mp3
French Kiss FM;http://direct.francemusique.fr/live/francemusique-midfi.mp3
Fréquence Jazz;http://178.63.62.145/;stream.mp3
Frequence Luz;http://broadcast.infomaniak.ch/frequencejazz-high.mp3
Fréquence Paris Plurielle;http://www.frequenceluz.com:8000/mobile
Frequence Plus;http://radio.toile-libre.org:8000/fpp.mp3
Frequence3;http://freqplus.ice.infomaniak.ch/freqplus-high.mp3
Fun Radio France;http://hd.stream.frequence3.net/frequence3-128.mp3
Fuzzy & Groovy Rock Radio;http://streaming.radio.funradio.fr:80/fun-1-44-128
Galaxie FM 95.30;http://listen.radionomy.com/fuzzy-and-groovy.m3u
GENERATION SOUL DISCO FUNK - La Référence Soul;http://91.121.22.39:8010/listen.pls
Generations FM;http://www.generationdiscofunk.com/pls/hd.m3u
Radiogalere FM88.4 Marseille;http://generationfm.ice.infomaniak.ch/generationfm-high.mp3
Graffiti Urban-Radio 88.6 FM La Roche sur Yon;http://www.radiogalere.org:8080/galere.mp3
HAG FM;http://www.urban-radio.com/128.m3u?PHPSESSID=d56d81aa478734fed860444e4f83bbd1
Happy FM;http://213.246.51.78:9290/;stream.mp3
Hit West;http://happyfm.ice.infomaniak.ch/happyfm-128.mp3
Hotmix Radio;http://broadcast.infomaniak.ch/hitwest-high.mp3
Hotmix Radio 80's;http://streamingads.hotmixradio.fm/hotmixradio-dance-128.mp3
Hotmix Radio 90's;http://streamingads.hotmixradio.fm/hotmixradio-80-128.mp3
Hotmix Radio Funky;http://streamingads.hotmixradio.fm/hotmixradio-90-128.mp3
Ici & Maintenant !;http://streaming.hotmixradio.fm/hotmixradio-funky-128.mp3
idFM Radio Enghien;http://radio.rim952.fr:8000/stream.mp3
Intensité;http://live.idfm98.fr:8000/idfm.m3u
Jazz Radio;http://intensite.net:9010/listen.pls
JetFm (Nantes);http://jazzradio.ice.infomaniak.ch/jazzradio-high.mp3
K6 FM;http://80.82.229.202:8000/jetfm.mp3
Radio Kerne;http://k6fm.ice.infomaniak.ch/k6fm-64.aac
Kiss FM;http://kerne.online.stalig.net/live.mp3
kisswestcoast;http://kissfm2.ice.infomaniak.ch/kissfm2-128.mp3
La Clé des Ondes (Bordeaux. La Clé des Ondes);http://kisswestcoast.ice.infomaniak.ch/kisswestcoast-64.aac
Latina;http://radio.lacdo.org/stream
L'Eko des Garrigues (Montpellier. Eko des garrigues);http://broadcast.infomaniak.net/start-latina-high.mp3
Le Mouv' ;http://91.121.159.124:8000/eko-des-garrigues-256k.ogg
Le Mouv' Xtra;http://direct.mouv.fr/live/mouv-midfi.mp3
Let's Go Zik;http://direct.mouv.fr/live/mouvxtra-midfi.mp3
Radio Liberté;http://stream.letsgozik.com:8000/letsgozik
Libre à toi (pro logiciels libres);http://radiolibertes.ice.infomaniak.ch/radiolibertes-128.mp3
Lor'FM;http://audio.libre-a-toi.org:8000/voixdulat_ogg
Maxi France;http://lorfm.ice.infomaniak.ch/lorfm-128.mp3
MBS Classic Gold;http://stream.maxifrance.fr:8358/stream
Mediterraneo Smooth Jazz ;http://stream1.evasionfm.com/mbs
Morow - Rock Progressif;http://streaming.radionomy.com/Mediterraneo-SMOOTHJAZZ
MFM;http://stream.fr.morow.com:8080/morow_med.mp3
Mixx Radio;http://mfm.ice.infomaniak.ch/mfm-128.mp3
Monte Carlo Doualiya (Anciennement RMC Moyen Orient);http://mixxfmfr.ice.infomaniak.ch/mixxfmfr-192.mp3 
Musical Spa Radio;http://live02.mc-doualiya.com/mc-doualiya.mp3
Néoplanète;http://streaming.radionomy.com/MusicalSpaRadio
Nostalgie;http://streaming.radionomy.com/Neoplanete
NRJ;http://cdn.nrjaudio.fm/audio1/fr/30601/mp3_128.mp3?origine=playerweb
NEO;http://cdn.nrjaudio.fm/audio1/fr/30001/mp3_128.mp3?origine=playernrj
O2 Radio (Bordeaux);http://stream.radioneo.org:8000/
Océane Fm;http://91.121.176.26:7900/listen.pls
OÜI FM;http://oceanefm.ice.infomaniak.ch/oceanefm-128.mp3
OÜI FM Alternatif;http://stream.ouifm.fr/ouifm-high.mp3
OÜI FM Classic Rock;http://alternatif.stream.ouifm.fr/ouifm2.mp3
OÜI FM Blues'n'Rock;http://classicrock.stream.ouifm.fr/ouifm3.mp3
OÜI FM Rock indé;http://bluesnrock.stream.ouifm.fr/ouifmbluesnrock-128.mp3
OÜI FM Ganja;http://rockinde.stream.ouifm.fr/ouifm5.mp3
Guadeloupe 1ère;http://ganja.stream.ouifm.fr/ouifmganja-128.mp3
Guyane 1ère;http://radios.la1ere.fr/guadeloupe
Martinique 1ère;http://radios.la1ere.fr/guyane
Mayotte 1ère;http://radios.la1ere.fr/martinique
Nouvelle Calédonie 1ère;http://radios.la1ere.fr/mayotte
Polynésie 1ère;http://radios.la1ere.fr/nouvellecaledonie
Réunion 1ère;http://radios.la1ere.fr/polynesie
Saint-Pierre-et-Miquelon 1ère;http://radios.la1ere.fr/reunion
Wallis et Futuna 1ère;http://radios.la1ere.fr/saintpierremiquelon
Oxy.Radio/Radio Libre ;http://radios.la1ere.fr/wallisfutuna
Podradio;http://www.oxyradio.net:8000/test.mp3
Plum fm;http://radio.podradio.fr:8000/adsl
Prun'92Fm;http://plumfm.online.stalig.net/live.mp3
Radio Activ' (radio associative de St Brieuc qui a rejoint ferarock);http://80.82.229.202:8000/streamprun
Radio87;http://stream.radio-activ.com
Radio Arc-en-Ciel Strasbourg;http://live2.radio87.fr
Radio Campus Amiens;http://str0.creacast.com/arcencielweb
Radio Campus Angers;http://www.radiocampus.fr:8000/amiens
Radio Campus Bordeaux;http://80.82.229.202/rca
Radio Campus Clermont;http://www.radiocampus.fr:8000/campus-bordeaux
Radio Campus Grenoble;http://campus.abeille.com:8000/campus
Radio Campus Lille;http://live.campusgrenoble.org:9000/rcg112
Radio Campus Orléans;http://radiocampuslille.ice.infomaniak.ch:80/radiocampuslille-128 MP3
Radio Campus Toulouse;http://orleans.radiocampus.org:8000/stream_rco
Radio Campus Tours;http://live.radio-campus.org:8000/toulouse
R-One Radio :: Listen Hits !;http://37.59.38.203:8000/webradiocampustours
Radio Bienvenue Strasbourg;http://streaming.radionomy.com/R-One-Radio
Radio Canut;http://www4.radiorbs.com:8000/RBS
Radio Classique;http://live.francra.org:8000/radiocanut
Radio Courtoisie;http://radioclassique.ice.infomaniak.ch/radioclassique-high.mp3
Radio Cristal;http://www.tv-radio.com/cgi-bin/tagger.pl?tag=site&amp;metafile=courtoisie/courtoisie-20k.asx
Radio Dio;http://stream.inovacast.fr:8888/stream
Radio EFM;http://www.hosting-serv.com:9160
Radio Espace;http://efm.elliptic.fr:8030/
Radio Flemme;http://radioespace.ice.infomaniak.ch/radioespace-high.mp3
Radio Gerard;http://str45.streamakaci.com:8014/
Radio Grenouille;http://188.165.236.217:8000/
Radio Junior;http://live.radiogrenouille.com/live
Radio serenity;http://213.186.61.62:8080/listen.pls
Radio Kreiz Breizh;http://streaming.radionomy.com/wiccaradio
Radio Larzac;http://rkb.online.stalig.net/live.mp3
Radio Latitude Troyes;http://stream.radiolarzac.org:8000/radiolarzac
Radio Libertaire;http://latitude.ice.infomaniak.ch/latitude-128.mp3
Radio María - France;http://ecoutez.radio-libertaire.org/radiolib.m3u
Radio Maritima;http://heberg.radioludo.com:8003/stream
Radio Metropolys;http://radiomaritima.streamakaci.com/radiomaritima.mp3
Radio Meuh;http://str0.creacast.com/metropolys
Radio Mont Blanc;http://radiomeuh.ice.infomaniak.ch/radiomeuh-128.mp3
Radio Nova;http://radiomontblanc1.ice.infomaniak.ch/radiomontblanc1-128.mp3
Radio RVA;http://broadcast.infomaniak.net/radionova-high.mp3
Radio Salve Regina;http://rva.ice.infomaniak.ch/rva-high.mp3
Radio Scoop Bourg en Bresse;http://radiosalveregina.no-ip.org:8000/listen.pls
Radio Scoop Clermont-Ferrand;http://radioscoopbourg-en-bresse.ice.infomaniak.ch/radioscoop-bourg-128.mp3
Radio Scoop Lyon;http://radioscoopclermont-ferrand.ice.infomaniak.ch/radioscoop-clermont-128.mp3
Radio Scoop Saint Etienne;http://radioscooplyon.ice.infomaniak.ch/radioscoop-lyon-128.mp3
Radio Sensations;http://radioscoopsaintetienne.ice.infomaniak.ch/radioscoop-stetienne-128.mp3
Radio SoLatino;http://sensations.ice.infomaniak.ch/sensations.mp3
Radio Star;http://94.23.26.193:9367/stream/2/;
Radio TeenTaal;https://www.radioking.com/play/radio-star
Radio Zinzine;http://www.radioteentaal.com:8000
Radio Zinzine Aix;http://91.121.65.189:8000/3
Rancho FM;http://91.121.65.189:8000/zinzine-aix
Radio Dreyeckland Libre 68 (RDL68);http://streaming.radionomy.com/rancho
RFI Afrique;http://sv3.vestaradio.com:4060/;stream.mp3
RFI Monde;http://live02.rfi.fr/rfiafrique-96k.mp3
RFM;http://live02.rfi.fr/rfimonde-96k.mp3
RFM Night Fever;http://rfm-live-mp3-128.scdn.arkena.com/rfm.mp3
RFM Party 80;http://rfm-wr2-mp3-128.scdn.arkena.com/rfm.mp3
Rire et chansons;http://rfm-wr4-mp3-128.scdn.arkena.com/rfm.mp3
Rire et chansons 100% Sketches;http://cdn.nrjaudio.fm/audio1/fr/30401/mp3_128.mp3?origine=playerweb
RMC Info Talk Sport;http://185.52.127.157/fr/30407/mp3_128.mp3?origine=fluxradios
RMV;http://rmc.bfmtv.com/rmcinfo-mp3
RTL;http://91.121.7.61:8200/
RTL2;http://streaming.radio.rtl.fr/rtl-1-44-128
RTS FM;http://streaming.radio.rtl2.fr:80/rtl2-1-44-96
Radio Caroline;http://stream.rtsfm.com:8000/;stream/1
Radio-Bro-Gwened;http://195.154.113.150:8000/caroline.mp3
Revolution Sound Records (collectif d'artistes du mouvement libre);http://rbg.online.stalig.net/live.mp3
Sing Sing;http://195.154.156.183/radio/411/stream/1670
Skyrock;http://stream.sing-sing.org:8000/singsing128
SOL-FM 100.7;http://icecast.skyrock.net/s/natio_mp3_128k
Soleil de Ré;http://stric6.streamakaci.com/solfm64.mp3
SpuTnik France;http://91.121.144.141:8000/stream.mp3
Sud Radio;https://nfw.ria.ru/flv/audio.aspx?ID=6854085&amp;type=mp3
Sun FM Le son Unique (radio FM) www.lesonunique.com;https://start-sud.ice.infomaniak.ch/start-sud-high.mp3
Sweet FM;http://www.lesonunique.com/sunhd.m3u
Swing FM;http://dedibox-linux.sweetfm.fr:8000/lms
Tendance Ouest;http://swingfm.ice.infomaniak.ch:80/swingfm-128
Tonic Radio;http://streaming.tendanceouest.com/tomanche.mp3
Top Music;http://hit-sport.ice.infomaniak.ch/hit-sport-high.mp3
TSF Jazz;http://str0.creacast.com/topmusic1
Vibration;http://broadcast.infomaniak.net/tsfjazz-high.mp3
Virgin Radio;http://vibration.ice.infomaniak.ch/vibration-high.mp3
Vmix - Accent Mix;http://mp3lg4.tdf-cdn.com/9243/lag_164753.mp3
Vmix - Afternoon Mix;http://www.vmix.fr/live/acc.m3u
Vmix - Late Mix;http://www.vmix.fr/live/aft.m3u
Voce Nustrale;http://www.vmix.fr/live/lat.m3u
Voltage 96.9 FM;http://213.186.61.62:8000/;
Welsass;http://broadcast.infomaniak.net/start-voltage-high.mp3
Wit FM;http://www.welsass.fr/play.m3u
Ze Radio;http://broadcast.infomaniak.net/start-witfm-high.mp3
ZJM;http://91.121.174.141:8676/;stream
" > "$1"
}

# gestion des parametres
conf_path="$HOME/.config/kiradio"
if [ ! -d "$conf_path" ] ; then
	mkdir -p "$conf_path"
fi

# radios.m3u8
fichier_radios="$conf_path/radio.csv"

# echo "chargement ligne $LINENO"
splashScreen () {
echo -e "${enJaune}${enGras}
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMWo;,cKMMMMMWWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMM:     Nx'.    .XMkOWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMO.   cK.      lMx   :XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMNdoo;  .;odxxMN.     lWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMN.    .0MMMMMMMMWd    'Xo'.;OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMM:    ,WMMMMMMMMMMMX.  0;     XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMM.    0MMMMMMMMMMMMMo  c0'  .lMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMOOKXNWMMMMMMMMMMMMMc   .xMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMM0..   0MMMMMMMMMMMx     0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMM:     ;OWMMMMMNXWc    xMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMk.      .'''.  cNX;.0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMWxododo'       .KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMN'   .Ox';:lxKMMMMMMMMMMMMMMMMMMMMMMMNoOMMModMMMMMMMMMMMMMM
MMMd'  .oWMx.  :KK     dx:   ...;OMMMMMMMMMMMMMMMMMMMd. oMMX  NMMMMMMMMMMMMM
MMMMN  0MMMW..KMMMXocl0MMM. kMMx  oMMMMMMMMMMMMMMMMMMMo oMMMkkMMMMMMMMMMMMMM
MMMMM  KMMM:'NMMMMMMMMMMMM' kMMMo  NMMMMMMMMMMMMMMMMMMx oMMMMMMMMMMMMMMMMMMM
MMMMM  KMW;,WMMMMMMMMMMMMM' kMMMO  KMMMMMMMMMMMMMMMMMMx oMMMMMMMMMMMMMMMMMMM
MMMMM  KN';WMMMMMMMKc.MMMM' kMMMd  NMMMWl,;.:NMMMMd,;', oMM0:.MMMMK:;.'kMMMM
MMMMM  O.:WMMMMMMMKc  MMMM' kMMK. oMMMM, WMd cMMMc.XMX. oM0c  MMMO kMW; oMMM
MMMMM    ;WMMMMMMMMM  MMMM' ;l, 'kMMMMM..MMX 'MMO xMMMl oMMM  MMW.'MMMN  KMM
MMMMM  d  ,WMMMMMMMM. MMMM' oO  OMMMMMM0KMXl 'MM, NMMMx oMMM  MMk lMMMM: lMM
MMMMM  K0  'WMMMMMMM. MMMM' kMd .XMMMMMM0,:k 'MM. MMMMx oMMM  MMl lMMMMd ;MM
MMMMM  KMK. .NMMMMMM. MMMM' kMM: .WMMMMl 0MN 'MM  NMMMx oMMM  MMl :MMMMk :MM
MMMMM  KMMX. .NMMMMM. MMMM' kMMW. cMMM0 :MMN 'MM. xMMMx oMMM  MMk .MMMMd xMM
MMMMW  KMMMX. .KMMMM. MMMM. kMMMK  xMMk ,MMk .WKo .NMMo cMMM  MMW. xMMM;.WMM
MMMNd  cNMMW:   lKW0  OWNO  ;XWMMO  cKX  .'l  'XW,  c:.  oWO  0WMK. xKl.0MMM
MMMkkkkkkWMKkkkkkkKkkkkXOkkkkkNMMM0kkkWXooXMkoNMMMx::O0lXMXkkkkXMMWd::xWMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
$nomlogiciel v $VERSION"
# sleep 1.2
	}
# echo "chargement ligne $LINENO"
initialiser_variables () {
	# COULEURS

	fdNoir='\033[40m'
	fdRouge='\033[41m'
	fdVert='\033[42m'
	fdJaune='\033[43m'
	fdBleu='\033[44m'
	fdRose='\033[45m'
	fdCyan='\033[46m'
	fdGris='\033[47m'
	# fdDefaut='\033[49m'

	enNoir='\033[30m'
	enRouge='\033[31m'
	enVert='\033[32m'
	enJaune='\033[33m'
	enBleu='\033[34m'
	enRose='\033[35m'
	enCyan='\033[36m'
	enGris='\033[37m'
	# enDefaut='\033[39m'

	enGras='\033[1m'
	enSouligner='\033[4m'
	enClignotant='\033[5m'
	enSurligner='\033[7m'
	enCache='\033[8m'

	enDefaut='\033[0m'

	# GENERALES
	nbre_radios=0
	nbre_page_radio=0

	la_pageRadio=1
	# sous_recherche=" "
	fichier_log=""

	tete_de_page=""
	pied_de_page=""

	# affiche les fréquences ou non
	bool_show_freq=false # bool_show_freq=true

} # fin de initialiser_variables
# echo "chargement ligne $LINENO"
# JOURNAL 
initialiser_journal () {
	fichier_log="$conf_path/$nomlogiciel.log"
	# #[ ! -f "$fichier_log" ] && \#
	> "$fichier_log" 
	journal "*******************initialisation*******************"
	journal "chargement"
	}
journal () {
	local NOW=$(date +%s.%N)
	local DIFF=$(echo "${NOW} - ${START}" | bc)
	echo -e "[${DIFF}] ------------------\n${@}" >> "${fichier_log}"
	# echo -e "$@" >> "$fichier_log"
	}

# FONCTIONS
# echo "chargement ligne $LINENO"

string_to_int (){
	LANG=C
	printf %.0f ${1/,/.}
	}
# echo "chargement ligne $LINENO"
_quitter () {
	journal "appel de : ${FUNCNAME} ${@}"
	# mettre ici tout ce qui sera nescessaire à la bonne fermeture
	# ...
	exit 0
	}
# echo "chargement ligne $LINENO"
pause () {
echo -e "	${enVert}${enGras}
			\r****************************************************************
			\rAppuyer sur une touche pour continuer...
			\r****************************************************************"
read -s -n 1
	}
# echo "chargement ligne $LINENO"
on_clear_terminal () {
	echo "${enDefaut}"
	reset > /dev/null
	}
# echo "chargement ligne $LINENO"


afficherMenuRadio () {
	# journal "appel de : ${FUNCNAME} ${@}"

	multiRadio=$1

tete_de_page="${enRouge}${enGras}$nomlogiciel v $VERSION
${enJaune}${enGras}-------------------------------------------"
	echo -e "$tete_de_page"

	for (( i=$(string_to_int $(($multiRadio-1))0); i<=$(string_to_int $(($multiRadio-1))9); i++ ))
	do
		[[ -n "${NOM_RADIO[$i]}" ]] && [ $i -ne 0 ] && \
			echo -en "${enVert}${enGras}$i ${enJaune}${enGras}: ${NOM_RADIO[$i]##*/} ${enDefaut}"
			# echo -e "${FREQUENCE[$i]}"
			if $bool_show_freq ; then echo -e "${FREQUENCE[$i]}" ; else echo -e "" ; fi

	done
pied_de_page="${enJaune}${enGras}-------------------------------------------
${enVert}${enGras}p${enJaune}${enGras}récédent\tpage $multiRadio/$nbre_page_radio\t\
${enVert}${enGras}s${enJaune}${enGras}uivant
${enDefaut}
${enVert}r*${enDefaut}${enJaune} : rechercher (rfrance pour france)
${enVert}Px${enDefaut}${enJaune} : page (x de 0 à $nbre_page_radio)
${enVert}vx${enDefaut}${enJaune} : volume (x de 0 % à 200 %)
${enVert}h et H${enDefaut}${enJaune} : aides
${enVert}q${enDefaut}${enJaune} : quitter
${enVert}k${enDefaut}${enJaune} : arrêter la musique (tuer VLC)
${enJaune}-------------------------------------------
${enJaune}${enGras}votre choix : ${enDefaut}"
	echo -en "$pied_de_page"
	}
# echo "chargement ligne $LINENO"

page_suivanteRadio () {
	# journal "appel de : ${FUNCNAME} ${@}"
	if [ $la_pageRadio -lt $nbre_page_radio ] ; then let la_pageRadio++ ; fi
	}
# echo "chargement ligne $LINENO"
page_precedenteRadio () {
	# journal "appel de : ${FUNCNAME} ${@}"
	if [ $la_pageRadio -gt 1 ] ; then let la_pageRadio-- ; fi
	}
# echo "chargement ligne $LINENO"
aller_a_la_pageRadio () {
	# journal "appel de : ${FUNCNAME} ${@}"
	# if [ $1 -gt 1 ] && [ $1 -lt $(echo "$nbre_page_radio + 1 "| bc) ] ; then let la_pageRadio=$1 ; fi
	if [ $1 -gt 0 ] && [[ $nbre_page_radio -ge $1 ]] ; then let la_pageRadio=$1 ; fi
	}
# echo "chargement ligne $LINENO"

infos_vlc () {
	# { sleep .3 ; echo "0000" ; sleep .3 ; echo "info" ; sleep .3 ; echo "stats" ; sleep .3 ; echo "get_title" ; } | telnet localhost 9999 ;
local out
	out=$({ sleep .3 ; echo "0000" ; sleep .3 ; echo "get_title" ;  sleep .3 ;} | telnet localhost 9999 ; 2> /dev/null)
	IFS=$'\n' out=( $out )
	on_clear_terminal

local le_lien="${out[6]##*> }"
# echo "le_lien=$le_lien"
local ok=0
local n=0

# IFS=$'\n' 
if [[ -n ${le_lien} ]] ; then
	local i
	for i in ${FREQUENCE[@]} ; do
		if [ $(echo $i | grep "${le_lien}") ] ; then 
			((ok++))
			# lien joué : 
			echo -e "radio en cours d'écoute :"
			echo -e "${enVert}${enGras}${le_lien}"
			echo -e "num $n : ${NOM_RADIO[$n]}${enDefaut}"
			# sleep 0.5
		fi
		((n++))
	done 
else
	echo -e "${enRouge}${enGras}erreurs : "
	echo -e "${enDefaut}${enGras}pas de lien retourné :\n"
	local temp ;for temp in ${out[@]} ; do echo $temp ; done
fi 
	}
# echo "chargement ligne $LINENO"
rechercher_radio () {
	echo "on recherche : $@"
	IFS=$'\n'

	local n=0
	local out
	local trouve=0
	# local i
	for i in ${NOM_RADIO[*]}
	do
		# [ -n "$out" ] && ((trouve++)) && echo -e "$n : $out"
		out=$(echo "$i" | grep -i "$@")
		[ $? -eq 0 ] && {
			((trouve++)) 
			echo -e "$n : $out"
			}
		((n++))
	done

	echo "$trouve radio(s) trouvée(s)"
	pause
	}
# echo "chargement ligne $LINENO"
ajouter_radio () {
local ajout
local nom
local freq
echo -en "${enJaune}${enGras}Ajouter une radio
${enVert}1 ${enJaune}- nom : 		$1
${enVert}2 ${enJaune}- adresse : 	$2
${enVert}3 ${enJaune}- valider
${enVert}autre - ${enJaune}Annuler
${enDefaut}choix : "
read -r -n 1 ajout
echo ""
case "$ajout" in
	# 0)		;;
	1)
		echo "Entrez un nom"
		read -r nom
		clear
		ajouter_radio "$nom" "$2"
		;;
	2)
		echo "Entrez une fréquence"
		read -r freq
		clear
		ajouter_radio "$1" "$freq"
		;;
	3)
		[ -n "$1" ] && [ -n "$2" ] && {
			echo "$1;$2" >> "$fichier_radios"
			charger_radios_csv "$fichier_radios"
			} || ajouter_radio
		;;
	*)	echo "Ajout - action annulée"	; pause ;;
esac

}
# echo "chargement ligne $LINENO"
voirFrequence () { if $bool_show_freq ; then bool_show_freq=false ; else bool_show_freq=true ; fi ; }
# echo "chargement ligne $LINENO"

charger_radios () {
if [ -f "$fichier_radios" ]
then
	charger_radios_csv "$fichier_radios"
else
	> "$fichier_radios" 
	echo -e "nom;frequence\n"
	remplir_radios_csv "$fichier_radios"
	# sleep .1
	charger_radios_csv "$fichier_radios"
fi
	}
# echo "chargement ligne $LINENO"
charger_radios_m3u8 () {
IFS=$'\n' list_radios=( $( < "$fichier_radios" ) )

n=0
for (( i=0; i<=((${#list_radios[@]}-1)); i++ )) ; do
	case "${list_radios[$i]}" in
		"#EXTINF:"*)
			nom_temp="$(echo "${list_radios[$i]}" | cut -d, -f2)"
			NOM_RADIO[$n]="${nom_temp}"
			((n++))
			;;

		"http:"*|"https:"*|"mms:"*)
			FREQUENCE[$n]="${list_radios[$i]}"
			;;

		*)	;;
	esac
done

nbre_radios=${#NOM_RADIO[@]}
nbre_page_radio=$(( 1+$nbre_radios/10 ))
}
# echo "chargement ligne $LINENO"
JouerRadio () {
	tuer_vlc
	sleep .5
	cvlc -I telnet --telnet-password=0000 --telnet-port=9999 ${FREQUENCE[$1]}  2> /dev/null &
	}
# echo "chargement ligne $LINENO"
volume () {
	{ sleep .3 ; echo "0000" ; sleep .3 ; echo "volume $1" ; } | telnet localhost 9999 ;
	}
# echo "chargement ligne $LINENO"
tuer_vlc () { killall vlc 2> /dev/null ; }
# echo "chargement ligne $LINENO"

parser_choix_radio () {
	# journal "appel de : ${FUNCNAME} ${@}"
	case "$choixRadio" in
		0) 
			journal "choixRadio=${choixRadio}\nTODO : choisir une radio" ; 
			echo "# rien à faire encore avec les 0 des radios ;°)"
			sleep 2
			# pause ; 
			;;

		[1-9]|[0-9][0-9]|[0-9][0-9][0-9]) 
			journal "choixRadio=${choixRadio}\n${NOM_RADIO[$choixRadio]}"
			la_radio="${NOM_RADIO[$choixRadio]}"
			JouerRadio "$choixRadio" 
			# pause
			;;

		h|a|aide)
				_aide ; pause ;;
		H)		_aide2 ; pause ;;
		f)		voirFrequence ;;

		s)		page_suivanteRadio ;;
		p)		page_precedenteRadio ;;
		P*)		aller_a_la_pageRadio "${choixRadio#*P}" ;;

		v*)		volume "${choixRadio#*v}" ;;
		i)		infos_vlc ; pause ;;
		k)		tuer_vlc ;;

		z)		charger_radios_csv "$fichier_radios" ;;
		E)		gedit "$fichier_radios" & ;;

		A)		ajouter_radio ;;
		r*)		rechercher_radio "${choixRadio#*r}" ;;

		q)		_quitter ;;
		# Q)		gedit "$fichier_radios" & ;;
		
		*)		;;
	esac
	
	}
# echo "chargement ligne $LINENO"
mainRadio () {
	# journal "appel de : ${FUNCNAME} ${@}"
	on_clear_terminal
	afficherMenuRadio $la_pageRadio

	# #saisie du choixRadio
	read -r choixRadio 

	on_clear_terminal
	parser_choix_radio
	mainRadio
	}
# echo "chargement ligne $LINENO"

_aide2 () {
echo -e "${enJaune}${enGras}"
cat << FIN 
je cherche à faire des choses simples, 
communes, lisible par un synthétiseur vocal, 
... et qui tiennent dans le temps.
... donc exit les interfaces graphiques :
des menus en texte et de la couleur pour attirer l'oeil sur l'essentiel
le moins de fonctions possible, une seule façon d'y accéder
et comme rien n'est compilé, facile à adapter.

ici c'est un joueur de liens avec VLC (un web radio player).

A partir d'un fichier radio.m3u8, 
on obtient automatiquement une liste de radios.
cette liste est par 10 lignes, on passe d'une page à une autre avec p ou s
pour précédent ou suivant, on accède à une page avec Px...

si on ferme le script, la musique continue.
pour l'arrêter, il suffit de relancer le script et d'utiliser k
ou tuer vlc (donc il est possible d'utiliser ce script à travers un tunnel ssh)
quelques touches et explications
[OPTIONS] : attention à la casse
h)	_aide ; pause	
H)	_aide2 ; pause	
f)	voirFrequence	 affiche les frequences à côté du nom dans la liste

s)	page_suivanteRadio	
p)	page_precedenteRadio	
P*)	aller_a_la_pageRadio "${choixRadio#*P}"	
aller directement à la page * [pe : P12]

v*)	volume	modifier le volume de vlc en % [pe : v80]
i)	infos_vlc	donne la station jouée par vlc
k)	tuer_vlc	ferme vlc

z)	charger_radios_csv "$fichier_radios" 	recharge le fichier radio
E)	gedit "$fichier_radios" &	éditer le fichier radio

A)	ajouter_radio	module d'ajout d'une radio
r*)	rechercher_radio "${choixRadio#*r}"	 [pe : rfrance pour france]

q)	_quitter

FIN
	}
_aide () {
echo -e "${enJaune}${enGras}"
cat << FIN 
[OPTIONS] :
h)	_aide ; pause	
H)	_aide2 ; pause	
f)	voirFrequence	

s)	page_suivanteRadio	
p)	page_precedenteRadio	
P*)	aller_a_la_pageRadio "${choixRadio#*P}"	

v*)	volume "${choixRadio#*v}"	
i)	infos_vlc ; pause	
k)	tuer_vlc	

z)	charger_radios_csv "$fichier_radios"	
E)	gedit "$fichier_radios" &	

A)	ajouter_radio	
r*)	rechercher_radio "${choixRadio#*r}"	

q)	_quitter
FIN
	}

# echo "chargement ligne $LINENO"

initialiser_variables
splashScreen
initialiser_journal
charger_radios

mainRadio

exit 0

ça reste un peu brouillon et j'ai mélangé les données et le code (qui seront séparés dans une prochaine version), l'idée étant de tout faire tenir dans un seul fichier.
NB : la liste des radios est prise depuis la doc

pour tester :
créer le dossier bin personnel :

mkdir $HOME/bin

créer le fichier :

> $HOME/bin/kiradio

l'éditer et mettre le code précédent dedans

gedit $HOME/bin/kiradio

le rendre exécutable

chmod +x $HOME/bin/kiradio

lancer le script :

kiradio

les prochaines améliorations utiliseront screen pour enfermer le script comme un service et pouvoir y accéder depuis la machine locale ou d'autres machines en réseau via ssh...
je n'ai pas encore potasser cette partie
vos commentaires sont les bienvenus
à suivre...

#14 Re : -1 »  [tuto bash] dossiers fichiers et listes ; lecture de web radios vlc » Le 15/11/2017, à 18:33

kholo
Réponses : 6

oui bien sûr... encore une fois merci watael !
ça va rentrer, je te le dis moi qu'ça va rentrer !!!
donc en une passe sans les variables

IFS=';' read NOM_RADIO[$l] FREQUENCE[$l] <<<"$ligne"

fonction corrigée :

charger_radios_csv () {
	local tete="chargement des radios"
	NOM_RADIO=()
	FREQUENCE=()
	local ligne 

	local l=0
	while read ligne
	do
		IFS=';' read NOM_RADIO[$l] FREQUENCE[$l] <<<"$ligne"
		echo -en "\r$tete : ${NOM_RADIO[$l]}"
		sleep .01 # pour prendre le temps de voir le chargement
		((l++))
	done < "$1"
	nbre_radios=$(($l-2))
	nbre_page_radio=$(( 1+$nbre_radios/10 ))

	echo "$nbre_radios radio(s) chargée(s)..."
	}

je passe en 0.019 !

#15 Re : -1 »  [tuto bash] dossiers fichiers et listes ; lecture de web radios vlc » Le 16/11/2017, à 08:50

kholo
Réponses : 6

oui j'ai vu toutes les autres solutions...

avoir toutes ses radios sous la main c'est bien, mais j'ai voulu aller plus loin...

j'ai commencé par faire un parseur de fichiers m3u... ça fonctionne mais ça m'a pris la tête... je le réimplanterai certainement plus tard.

mon idée est d'avoir une liste simple, un lanceur et de mettre ça dans des variables pour le faire annoncer par un synthé vocal par exemple ou faire de la commande à distance... le script lance cvlc avec telnet en local.

vlc -I telnet --telnet-password=0000 --telnet-port=9999 ${FREQUENCE[$1]}  2> /dev/null &

ça permet de piloter vlc depuis la ligne de commande et éventuellement à travers ssh...

ou des infos (commenté dans le code)

# { sleep .3 ; echo "0000" ; sleep .3 ; echo "info" ; sleep .3 ; echo "stats" ; sleep .3 ; echo "get_title" ; } | telnet localhost 9999 ;

ici pour récupérer les infos de ce que lit vlc

{ sleep .3 ; echo "0000" ; sleep .3 ; echo "get_title" ;  sleep .3 ;} | telnet localhost 9999

piloter le volume :

volume () {
	{ sleep .3 ; echo "0000" ; sleep .3 ; echo "volume $1" ; } | telnet localhost 9999 ;
	}

... et je dois avoir un script pour enregistrer qui traîne quelque part...

... en fait toutes mes prises de tête en bash n'ont comme but que de finir par faire un interfaçage pour ajouter ensuite simplement de la commande vocale... et peut être une IA (faible)

#16 Re : -1 »  [tuto bash] dossiers fichiers et listes ; lecture de web radios vlc » Le 16/11/2017, à 17:54

kholo
Réponses : 6

j'ajoute le module d'enregistrement :

record_log () {
	xterm -e "while [ -f $virtOUT.pid ] ; do tail -4 $virtOUT ; sleep 1 ; clear ; done" &
}
# echo "chargement ligne $LINENO"
record_radio () {
echo "# module d'enregistrement"
if [ -z $1 ] ; then 
	# killall wget
	# killall curl
	
	# $(ps ax | grep matrix | grep -v grep | sed "s/^ *//" | cut -d " " -f1)
	kill -9 $(< $virtOUT.pid)
	rm $virtOUT.pid
else

	# To save stream:
	# curl --output ~/Downloads/Radio/CostaDelMar.mp3 http://sc-costadelmar.1.fm:10156
	# Useful options are --max-time <seconds> and --max-filesize <bytes>. 

	curl --output $HOME/Musique/stream.mp3 "${FREQUENCE[$1]}" >>$virtOUT 2>&1 &
	echo $! > $virtOUT.pid 
	record_log
fi
	}

record_log affiche le log du téléchargement

possibilité de faire du time shift en enregistrant une diffusion tout en lisant le fichier enregistré (pas encore codé mais il suffit d'écouter le mp3 dans un lecteur !)

#17 Re : -1 »  [RESOLU] Affichage script bash » Le 16/11/2017, à 08:23

kholo
Réponses : 1

salut,
mettre ton script voire une partie peut aider...

tu dois avoir une option dans le navigateur de fichier (dolphin je pense pour toi)
qui permet de choisir quand on clic sur un fichier exécutable entre
le lancement simple, ou dans un terminal et l'édition.
(je pense comme tous les navigateurs de fichiers)
et un peu de lecture
Ajouter des applis dans le menu KDE avec bash
[résolu] ".sh" non exécutables sous kde

sinon
pour te simplifier la vie, fais un lanceur :

#/bin/bash
konsole "/chemin/absolu/de/ton/script" &
exit 0

idem dolphin : konsole pour kde sinon xterm ou gnome-terminal,...
NB : le & va laisser terminer ce script après avoir lancé konsole

pour ne pas avoir à mettre  "/chemin/absolu/de/ton_script"
il faut ajouter un dossier bin dans ton dossier perso

mkdir $HOME/bin

puis se déconnecter et se reconnecter pour que bin soit ajouté à $PATH
maintenant où que tu sois tu peux faire :

ton_script

NB : cela pour ton utilisateur, si plusieurs utilisateurs veulent utiliser ton script,
il faut le mettre dans un dossier système (/usr/local/sbin/ ou /usr/local/bin/ voire /bin )
avec le proprio et le groupe en root et les droits d'exécution (755)
NB2 : tu peux mettre le lanceur également dans le dossier bin wink

enfin, tu peux utiliser des affichages graphiques comme zenity ou yad (peut être KDialog pour toi)

zenity --info --text "Bonjour monde\ttabulation\nsaut de ligne"

#18 Re : -1 »  Thunderbird afficher fiche contact » Le 15/11/2017, à 13:40

kholo
Réponses : 6

salut
afficher un preview dans TB : F8
dans l’entête tu as les infos importantes : de, pour, sujet et donc les infos sur l'expéditeur si il est dans un de tes carnets d'adresses
tu ajouteras un expéditeur avec la petite étoile à droite de 'De' wink

#19 Re : -1 »  ssh par sshpass » Le 15/11/2017, à 12:08

kholo
Réponses : 11

et mettre la partie de code entre balise dans ton message #8 hmm

#20 Re : -1 »  [tuto bash]script lanceur de script et post install 16.04 » Le 15/11/2017, à 13:25

kholo
Réponses : 17

kipilubuntu v0.013

#!/bin/bash
# ----------------------------------------------
nomlogiciel="${0##*/}"
FONCTION="lanceur de scripts ; installeurs, patchs, ppa,..."
VERSION="0.013"
# NOTES DE VERSIONS
# ----------------------------------------------
# 
# ----------------------------------------------
echo "lancement $nomlogiciel..."
sleep .5
clear

# ****************************************************************
# dir_DATA="$( realpath ${0%/*}/data_demo/ )"
# echo -e "dir_DATA\n$dir_DATA"
# ls "$dir_DATA"
# exit 0

# nautilus "$PWD" ; exit 0

# Pour éviter d'accéder en lecture à une variable n'ayant pas d'existence, 
# on peut inscrire la commande set -u en début de script.
# set -u

# pour tracer demasquer set -x
# set -x

#~**************************************************************
#~l'utilisateur est il sudoer ?
#~**************************************************************
#~echo "l'utilisateur est il sudoer ?"
#~[ -n "$( groups $USER | grep sudo )" ] && echo oui || echo non
[ -n "$( groups $USER | grep sudo )" ] || {
echo "ATTENTION
ce script est lancé par $USER qui n'est pas sudoer 
et ne pourra pas exécuter certaines fonctions"
# exit 1
}
#~**************************************************************
# msgbox () { zenity --info --text="$@" ; }

# ****************************************************************

# initialiser_variables () {
# COULEURS

fdNoir='\033[40m'
fdRouge='\033[41m'
fdVert='\033[42m'
fdJaune='\033[43m'
fdBleu='\033[44m'
fdRose='\033[45m'
fdCyan='\033[46m'
fdGris='\033[47m'
# fdDefaut='\033[49m'

enNoir='\033[30m'
enRouge='\033[31m'
enVert='\033[32m'
enJaune='\033[33m'
enBleu='\033[34m'
enRose='\033[35m'
enCyan='\033[36m'
enGris='\033[37m'
# enDefaut='\033[39m'

enGras='\033[1m'
enSouligner='\033[4m'
enClignotant='\033[5m'
enSurligner='\033[7m'
enCache='\033[8m'

enDefaut='\033[0m'

# ****************************************************************

# GENERALES
# les_cat=""
START=$(date +%s.%N)
la_pageCAT=1
la_pagePATCH=1

tete_de_page="${enJaune}${enGras}-------------------------------------------
${enRouge}${enGras}$nomlogiciel v $VERSION
${enJaune}${enGras}-------------------------------------------"
pied_de_page="
${enVert}${enGras}p ${enJaune}${enGras}: précédent\t\t\t\
${enVert}${enGras}s ${enJaune}${enGras}: suivant
${enJaune}${enGras}-------------------------------------------
${enVert}${enGras}a ${enJaune}${enGras}: aide
${enRouge}${enGras}q ${enJaune}${enGras}: quitter
${enJaune}${enGras}-------------------------------------------
${enJaune}${enGras}votre choix : ${enDefaut}"

	# }
# initialiser_variables # FIN

# ******************************************************************

splashScreen () {
echo -e "${enJaune}${enGras}
MMMMMMMMMMMMMMMMMMMMMMMNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMX:   .:NMMMMWXKKKKNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMM'      ;Mk'        lMMkkWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMl      dW.        .WMx   ,0MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMKo::oKO'         KMX      ,KMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMNc::,.   .lOXWMMMMMx.       oMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMW'      ,KMMMMMMMMMMMWx.     oWd'..,dMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMc      oMMMMMMMMMMMMMMMW,   ;M'      cMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMN      ,MMMMMMMMMMMMMMMMMW.  ;M'      cMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMK     .kMMMMMMMMMMMMMMMMMM;   lNd,..,xMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMWO0XWMMMMMMMMMMMMMMMMMMMMM.     oMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMM0l:;'..xMMMMMMMMMMMMMMMMc      oMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMX.      cNMMMMMMMMMMMMMc      'WMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMX.       ;xKWMMMMW0d0MWl    ,WMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMWl          ...     ;XMX, dMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMXc.:oddc'           lWMWMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMNo'..:OX,      .,o0MMMMMMMMMMMMWMMMMMMMMWNMMMMMMMM
MMX00000000XMMW0000000KMMM.      xW;;:cok0000XMMMMMMMMMX. :MMMMWO; 'MMMMMMMM
MMKx:    :xKMMWk;   .lOMMM.      xWkx.     .   'xMMMMMMk  .MMM0;.  'MMMMMMMM
MMMMM,  ,MMMMMMMd  dMMMMMMNl'..;OMMMMK   0MMWx.  'NMMMMMdc0MMMMMK  'MMMMMMMM
MMMMMc  cMMMMMMO .XMMMMMMMMMMMMMMMMMMW   KMMMMX   .WMMMMMMMMMMMMN  'MMMMMMMM
MMMMMc  cMMMMMd :WMMMMMMMMMMMMMMMMMMMM   KMMMMMl   kMMMMMMMMMMMMN  'MMMMMMMM
MMMMMc  cMMMW; oMMMMMMMMMMMMMMMMMMMMMM   KMMMMMk   oMMMMMMMMMMMMN  'MMMMMMMM
MMMMMc  cMMK. OMMMMMMMMMMMMMOc.oMMMMMM   KMMMMMk   dMMMKl.,MMMMMN  'MMMMMMMM
MMMMMc  cMx .XMMMMMMMMMMMMk'   lMMMMMM   KMMMMM,   NM0,   ,MMMMMN  'MMMMMMMM
MMMMMc  ;; .NMMMMMMMMMMMMMMMo  lMMMMMM   KMMMWc   kMMMMO  ,MMMMMN  'MMMMMMMM
MMMMMc  .   .XMMMMMMMMMMMMMMk  lMMMMMM   ':c:.  '0MMMMMN  ,MMMMMN  'MMMMMMMM
MMMMMc  cO    OMMMMMMMMMMMMMk  lMMMMMM   O0kxxONMMMMMMMN  ,MMMMMN  'MMMMMMMM
MMMMMc  cMX.   oMMMMMMMMMMMMk  lMMMMMM   KMMMMMMMMMMMMMN  ,MMMMMN  'MMMMMMMM
MMMMMc  cMMN,   ;WMMMMMMMMMMk  lMMMMMM   KMMMMMMMMMMMMMN  ,MMMMMN  'MMMMMMMM
MMMMMc  cMMMMo   .XMMMMMMMMMk  lMMMMMM   KMMMMMMMMMMMMMN  ,MMMMMN  'MMMMMMMM
MMMMMc  cMMMMMO.   OMMMMMMMMk  lMMMMMM   KMMMMMMMMMMMMMN  ,MMMMMN  'MMMMMMMM
MMMMM:  cMMMMMMX.   oWMMMMMMk  lMMMMMW   KMMMMMMMMMMMMMN  ,MMMMMN  'MMMMMMMM
MMMMM'  ,MMMMMMMX    .0MMMMMx  cMMMMMK   xMMMMMMMMMMMMMK  .MMMMMK  .MMMMMMMM
MMOo,    ,oOMMMO;      .ckKo.   cOWdl.    ldXMMMMMMMMNo.   :kMNd.   :dWMMMMM
MMNXXXXXXXXNMMMNXXXXXXXXXNWXXXXXXNMXXXXXXXXXWMMMMMMMMWXXXXXXXMWXXXXXXXMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
$nomlogiciel v $VERSION"
sleep .8
	}
splashScreen
# ****************************************************************

# JOURNAL

initialiser_journal () {
	fichier_log="$nomlogiciel.log"
	# #[ ! -f "$fichier_log" ] && \#
	> "$fichier_log" 
	journal "*******************initialisation*******************"
	journal "chargement"
	}
journal () {
	local NOW=$(date +%s.%N)
	local DIFF=$(echo "${NOW} - ${START}" | bc)
	echo -e "[${DIFF}] ------------------\n${@}" >> "${fichier_log}"
	# echo -e "$@" >> "$fichier_log"
	}
initialiser_journal

# ****************************************************************

# catch CTRL-C
trap "echo ''; echo 'sortie avec CTR-C. on quitte' ; sleep 2 ; exit 1" 2

# ****************************************************************

# FONCTIONS

# echo "chargement ligne $LINENO"
string_to_int (){
	LANG=C
	printf %.0f ${1/,/.}
	}

_quitter () {
	journal "appel de : ${FUNCNAME} ${@}"
	# mettre ici tout ce qui sera nescessaire à la bonne fermeture
	# ...
	exit 0
	}
# echo "chargement ligne $LINENO"
pause () {
	echo -e "${enVert}${enGras}Appuyer sur une touche pour continuer..."
	read -s -n 1
	}
# echo "chargement ligne $LINENO"
on_clear_terminal () {
	echo "${enDefaut}"
	reset > /dev/null
	}

# ****************************************************************

# PARTIE CATEGORIE

# echo "chargement ligne $LINENO"
choisir_dossier_DATA () {
	journal "appel de : ${FUNCNAME} ${@}"

	# dir_DATA=./data/
	# dir_DATA=./data_test/
	# dir_DATA="$( realpath "$dir_DATA" )"
	# #dir_DATA="$( readlink -e "$dir_DATA" )"
	# #dir_DATA="$( readlink -m "$dir_DATA" )"

	# dir_DATA="$( realpath ./data_demo/ )"
	dir_DATA="$( realpath ${0%/*} )"
	dir_DATA="$( readlink -m "$dir_DATA" )"
	dir_DATA="$dir_DATA/data_demo/"
	[[ -n ${@} ]] && dir_DATA="${@}"
	
	if [[ ! -d "$dir_DATA" ]]
	then 
		journal "erreur :\ndossier DATA : $dir_DATA" ; 
		exit 1 ; 
	fi
	journal "dossier DATA : $dir_DATA"
	}
# echo "chargement ligne $LINENO"
charger_categories () {
	journal "appel de : ${FUNCNAME} ${@}"
	les_cat=$(find "$dir_DATA" -maxdepth 1 -type d | sort)
	IFS=$'\n' les_cat=( $les_cat )
	# IFS=$'\n' 
	nbre_cat=${#les_cat[@]}

	nbre_page_cat=$(( 1+$nbre_cat/9 ))
	journal "nbre cats : $nbre_cat\nnbre pages : $nbre_page_cat"
	}


# echo "chargement ligne $LINENO"
afficherMenuCAT () {
	# journal "appel de : ${FUNCNAME} ${@}"
	multiCAT=$1
	echo -e "$tete_de_page"
	echo -e "${enJaune}CATEGORIES - ${enGras}page $multiCAT/$nbre_page_cat\n"

	for (( i=$(string_to_int $(($multiCAT-1))0); i<=$(string_to_int $(($multiCAT-1))9); i++ ))
	do
		[ -n "${les_cat[$i]}" ] && [ $i -ne 0 ] && echo -e "${enVert}${enGras}$i ${enJaune}${enGras}: ${les_cat[$i]##*/}"
	done
	# echo -e "${enJaune}${enGras}-------------------------------------------"
	echo -en "$pied_de_page"
	}
# echo "chargement ligne $LINENO"
page_suivanteCAT () {
	# journal "appel de : ${FUNCNAME} ${@}"
	if [ $la_pageCAT -lt $nbre_page_cat ] ; then let la_pageCAT++ ; fi
	}
# echo "chargement ligne $LINENO"
page_precedenteCAT () {
	# journal "appel de : ${FUNCNAME} ${@}"
	if [ $la_pageCAT -gt 1 ] ; then let la_pageCAT-- ; fi
	}
# echo "chargement ligne $LINENO"
parserChoixCAT () {
	# journal "appel de : ${FUNCNAME} ${@}"
	case "$choixCAT" in
		0) 
			journal "choixCAT=${choixCAT}\nTODO : choisir une cat" ; 
			echo "# rien à faire encore avec les 0 des CAT ;°)"
			sleep 2
			# pause ; 
			# mainCAT 
			;;

		[1-9]|[0-9][0-9]) 
			journal "choixCAT=${choixCAT}\n${les_cat[$choixCAT]}"
			la_cat="${les_cat[$choixCAT]}"
			choisir_dossier_PATCH "$la_cat"
			charger_patch
			mainPATCH
			pause
			;;

		# c|C) mainCAT ;;

		s|S) page_suivanteCAT ;;
		p|P) page_precedenteCAT ;;

		a|A) _aide  ; pause ;;
		q|Q) _quitter ;;
		*)  ;;
	esac
	
	}
# echo "chargement ligne $LINENO"
mainCAT () {
	la_pagePATCH=1
	# journal "appel de : ${FUNCNAME} ${@}"
	on_clear_terminal
	afficherMenuCAT $la_pageCAT

	# #saisie du choixCAT
	# read -s -n 1 choixCAT 
	read -r choixCAT 

	on_clear_terminal
	parserChoixCAT
	mainCAT
	}

_aide () {
echo -e "${enJaune}${enGras}"
cat << FIN 
POST INSTALLATION UBUNTU - Le PC à Kiki

Suite à ce tuto initialement posté sur le forum de Ubuntu fr
https://forum.ubuntu-fr.org/viewtopic.php?id=1993089

transcription en script bash.

Principe :
Le script principal n'est qu'un luncheur qui recense les dossiers 
contenus dans un dossier data 
ET qui contiennent des lanceurs eux même en bash 

Chaque lanceur peut être lancé indépendement sans dépendance.

Utilisation :
lancer $0 (pas de droits élevés)
$0
choisir une catégorie
lancer un patch à appliquer
donner le mot de passe root pour chaque nouvelle action
si celui ci est demandé.



TODO installation des dépendances :
la totalité des pgms utilisés doivent faire parti du système ou de bash :
cd, sed, echo, function,...
FIN
	}

# ****************************************************************

# PARTIE PATCH

# echo "chargement ligne $LINENO"
choisir_dossier_PATCH () {
	# journal "appel de : ${FUNCNAME} ${@}"
	# dir_PATCH="$dir_DATA/00tests/"
	dir_PATCH="$@"
	# dir_PATCH="$dir_DATA/sudoer/"
	
	journal "dossier PATCH\n$dir_PATCH"
	}
# echo "chargement ligne $LINENO"
charger_patch () {
	# journal "appel de : ${FUNCNAME} ${@}"
	les_patch=$(find "$dir_PATCH" -maxdepth 1 -type d | sort)
	IFS=$'\n' les_patch=( $les_patch )
	nbre_patch=${#les_patch[@]}
	nbre_page_patch=$(( 1+$nbre_patch/9 ))

	journal "nbre_patch=$nbre_patch\nnbre_page_patch=$nbre_page_patch"
	# pause
	}

# echo "chargement ligne $LINENO"
page_suivantePATCH () {
	# journal "appel de : ${FUNCNAME} ${@}"
	if [ $la_pagePATCH -lt $nbre_page_patch ] ; then let la_pagePATCH++ ; fi 
	}
# echo "chargement ligne $LINENO"
page_precedentePATCH () {
	# journal "appel de : ${FUNCNAME} ${@}"
	if [ $la_pagePATCH -gt 1 ] ; then let la_pagePATCH-- ; fi
	}
# echo "chargement ligne $LINENO"
lancerPATCH () {
	if [[ -e "${@}/main.pil" ]] ; then 
		journal "fichier lanceur main.pil trouvé dans \n${@}"
		"${@}/main.pil" 
	else
		if [[ -e "${@}/install.sh" ]] ; then 
			journal "fichier lanceur install.sh trouvé dans \n${@}"
			"${@}/install.sh"
		else
			journal "aucun fichier lanceur trouvé dans \n${@}"
		fi 
	fi
	}
# echo "chargement ligne $LINENO"
parserChoixPATCH () {
	journal "appel de : ${FUNCNAME} ${@}"
	case "$choixPATCH" in
		0) 
			# journal "ChoixPATCH=${ChoixPATCH}\nTODO : choisir une patch" ;
			echo "# rien à faire encore avec les 0 des PATCH ;°)"
			sleep 3 
			# pause
			;;
		[1-9]|[0-9][0-9]) 
			# choix = 0 à 9 ou 10 à 99 ; pour 999 ajouter "|[0-9][0-9][0-9]"
			journal "choixPATCH=${choixPATCH}\n${les_patch[$choixPATCH]}"
			echo -e "${enBleu}${enGras}"
			lancerPATCH "${les_patch[$choixPATCH]}"
			# pause 
			;;

		# c|C) mainCAT ;;

		# s|S) page_suivantePATCH ;;
		# p|P) page_precedentePATCH ;;

		# a|A) _aide ; pause ;;
		# a|A) _aide ;;
		# q|Q) _quitter ;;
		# *)  ;;
	esac
	}
# echo "chargement ligne $LINENO"


mainPATCH () {
# source menu.source
laPhrase="choisir des éléments"
LeTitre="un titre ici" # defaut

IFS=$'\n'
mMenu=()

# i=0
i=-1
for f in ${les_patch[@]}
do
	[ -n $f ] && {
		((i++))
		mMenu+=($i "${f##*/}" OFF)
	}
done

# https://www.unix.com/shell-programming-and-scripting/110425-shift-array-element.html
# array=( a b c d e f g h i j k l ) ## define array
# 
# unset array[0]              ## remove element
# array=( "${array[@]}" )     ## pack array 'je pense pas que ça puisse marcher avec les quottes
# 
# printf "%s\n" "${array[@]}" ## print array

# on récupère la première ligne qui est le dossier parents des éléments
LeTitre="${mMenu[1]}"
# on supprime cette première ligne : 3 éléments
unset mMenu[0]
unset mMenu[1]
unset mMenu[2]
mMenu=( ${mMenu[@]} )

aFaire=$(whiptail --title "$LeTitre" --checklist "$laPhrase" --separate-output 15 60 4 ${mMenu[@]} 3>&1 1>&2 2>&3 ;)
# echo ""
IFS=$' \t\n'
for choixPATCH in ${aFaire[@]}
do
	# echo "on lance $choixPATCH : ${les_patch[$choixPATCH]}"
	# echo "on lance $choixPATCH"
	parserChoixPATCH $choixPATCH
done
}

# ****************************************************************

# DEBUT DU SCRIPT

choisir_dossier_DATA "$@"
charger_categories
mainCAT

exit 0

#21 Re : -1 »  [Résolu] Exécuter script en sortie de veille ou entrée en veille » Le 14/11/2017, à 09:21

kholo
Réponses : 14

salut,
et pour l’interaction, penser à mettre le bon DISPLAY
par exemple pour cron :

export DISPLAY=:0 && /somedirectory/your_zenity_script.sh

depuis un script en root

env DISPLAY=:0.0 zenity --question...

#22 Re : -1 »  lister un dossier [Résolu] » Le 14/11/2017, à 08:43

kholo
Réponses : 6

salut,
vu l'endroit où c'est posté, j'ajouterai :

for un_fichier in "/media/francis/BIG2/Musiques 2/"*
do
  # des trucs à faire comme :
  echo "$un_fichier"
done

wink

#23 Re : -1 »  lister un dossier [Résolu] » Le 14/11/2017, à 09:13

kholo
Réponses : 6
pingouinux a écrit :
kholo #5 a écrit :
for un_fichier in "/media/francis/BIG2/Musiques\ 2/"*

Il ne faut pas mettre à la fois les " " et le \ devant l'espace, sauf si le \ fait partie du nom du fichier.

oups désolé... corrigé !

#24 Re : -1 »  [Résolu] Script Reset du clavier au démarrage de la session Ubuntu » Le 14/11/2017, à 09:07

kholo
Réponses : 7

en passant par /etc/init.d,
tu demandes au système de gérer le service avec des droits élevés.
en fait des droits limités suffisent et tu ne veux pas un service
mais une action ponctuelle.

dans ce cas comme le dit LukePerp tu peux gérer ça en graphique
ou avec "gnome-desktop-item-edit" (si il est installé)

gnome-desktop-item-edit --create-new ~/$HOME/.config/autostart

NB tu peux le créer sur le bureau pour le tester puis le déplacer dans autostart...

ou en ajoutant à ton dossier autostart perso qui se trouve dans ton .config :

nautilus $HOME/.config/autostart

et tu y mets un fichier .desktop (tu peux adapter)

[Desktop Entry]
Type=Application
Exec=/usr/bin/xset -led
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[fr_FR]=led_on
Name=led_on
Comment[fr_FR]=allume un clavier rétroéclairé
Comment=idem en anglais

cool