Contenu | Rechercher | Menus

Annonce

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.

À propos de l'équipe du forum.

#1 Le 29/08/2014, à 10:21

polorafale

changer un texte dans un fichier à partir d' une variable [RESOLU]

bonjour , les ami(e)s

Je fais un scripte pour changer d' ip sur owncloud à chaque fois que je change de réseau wifi.
pour l instant je teste sans résulta mes commande via un fichié nommé :test

pour récupérer l' ip de la machine , la commande est :

ifconfig wlan0 | grep 'inet adr:' | cut -d: -f2 | awk '{ print $1}'

voici le fichier test :

 <? Php
 $ AUTOCONFIG = array (
   "Directory" => "/ www / htdocs / owncloud / data",
    1 => "192.192.192.192/owncloud",
 );

pour récupéré l' ip dans le fichier test c' est :

grep 1 test | cut -d'"' -f2 | cut -d'/' -f1

je tente cette commande avec sed afin de changer les ip mes sa ne marche pas :

sed -i "s/"grep 1 test | cut -d'"' -f2 | cut -d'/' -f1"/"ifconfig wlan0 | grep 'inet adr:' | cut -d: -f2 | awk '{ print $1}'"/g" test

je cale , quelqu'un peut il m éclairer merci à vous.

Dernière modification par polorafale (Le 29/08/2014, à 22:35)


Peace and love

Hors ligne

#2 Le 29/08/2014, à 10:27

jplemoine

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

Je pense qu'il faut que tu expliques ton problème.
Là, ton début de solution me parait très compliqué...


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

En ligne

#3 Le 29/08/2014, à 10:51

polorafale

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

Mon problème est que je suis dj ( mixxx,jack).
j' ai mis owncloud sur la machine qui me sert pour mes soirée.
le but est de pouvoir recevoir de la musique directement grâce au réseau wifi via des tel ou tablette ex....
comme je suis en reseau locale je ne peux pas faire de dns.
il me suffit juste d' indiqué à la personne mon adresse ip locale pour qu' il accède au serveur php .de type sad http://mon.adresse.ip/owcloud )
j' aimerais automatisé la partis config de owncloud pour que je n ai pas a faire la manip a chaque fois que je change d' ip en mode dhcp.

car owncloud demande que l on assigne au préalable url dans son fichier config sinon il bloque la connection si celle ci n' est pas dans sa base de registre.
plus explication ici.
http://forum.kimsufi.com/showthread.php … re-domaine

Dernière modification par polorafale (Le 29/08/2014, à 11:18)


Peace and love

Hors ligne

#4 Le 29/08/2014, à 11:03

jplemoine

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

Si ton fichier ne fait que les 5 lignes, je pense qu'un script peut permettre de générer le fichier entièrement.
S'il est plus gros et que tu en as donné qu'un extrait, il faut faire subtil...


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

En ligne

#5 Le 29/08/2014, à 11:14

polorafale

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

je préfére être subtile car on ne sais pas si ce fichier est voué à être modifier pour les prochaines version de owncloud.
mais je suis preneur de toute options en attendant big_smile

Dernière modification par polorafale (Le 29/08/2014, à 11:20)


Peace and love

Hors ligne

#6 Le 29/08/2014, à 11:29

jplemoine

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

Solution rapide :

#! /bin/bash

nom="toto.php"
adr_ip=$(ifconfig wlan0 | grep 'inet adr:' | cut -d: -f2 | cut -d' ' -f1)

echo "adresse IP : $adr_ip"

# generation du fichier

echo "<? Php" > $nom
echo " $ AUTOCONFIG = array (" >> $nom
echo "   \"Directory\" => \"/ www / htdocs / owncloud / data\"," >> $nom
echo "    1 => \"$adr_ip/owncloud\"," >> $nom
echo " );" >> $nom

# message de fin
echo "-- fichier '$nom' genere --" 

+ Attention : n'appelle pas le fichier test car c'est une instruction shell qui ne fera rien...
+ j'ai mis un nom de fichier au pif : tu peux le changer et mettre le chemin.

exemple : nom="/etc/ownclound/config.txt"

+ pour le subtil, il me faudra un peu plus le temps mais surtout, il y a sur le forum des gens qui pourront peut-être trouvé plus simple.
+ j'ai modifié la façon d'obtenir l'adresse IP pour n'utiliser que cut et ne pas avoir et cut et awk.

Dis-moi si c'est bon... ou pas...


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

En ligne

#7 Le 29/08/2014, à 11:36

pingouinux

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

Bonjour,
En une ligne, mais ce n'est pas très joli

sed -r "s#^( +1 .*\")[0-9.]+(/.*)\$#\1$(ifconfig wlan0 | sed -rn 's/ +inet [^:]+:([0-9.]+).*/\1/p')\2#" test

Édité :Légère simplification

sed -r "s#^( +1 .*\")[0-9.]+(/.*)#\1$(ifconfig wlan0 | sed -rn 's/ +inet [^:]+:([0-9.]+).*/\1/p')\2#" test

Dernière modification par pingouinux (Le 29/08/2014, à 11:55)

Hors ligne

#8 Le 29/08/2014, à 14:12

polorafale

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

merci à vous deux big_smile
pour le scrite sa marche lol
mais pour le code il n' édit pas dans mon fichier test :

sed -r "s#^( +1 .*\")[0-9.]+(/.*)#\1$(ifconfig wlan0 | sed -rn 's/ +inet [^:]+:([0-9.]+).*/\1/p')\2#" test

quelqu' un à la solution ?

Dernière modification par polorafale (Le 29/08/2014, à 14:50)


Peace and love

Hors ligne

#9 Le 29/08/2014, à 14:29

pingouinux

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

Si tu veux que le fichier test soit modifié, il faut ajouter -i au premier sed

sed -i -r "s#^( +1 .*\")[0-9.]+(/.*)#\1$(ifconfig wlan0 | sed -rn 's/ +inet [^:]+:([0-9.]+).*/\1/p')\2#" test

Hors ligne

#10 Le 29/08/2014, à 14:42

polorafale

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

Super ,
sa marche big_smile

j avais testé l option -i mais j' avais viré le -r

je passe en mode résolu .
je posterais un scripte tout fait pour les débutant en herbe.
pour qu ' ils puissent installer en un clique ubuntu-studio le noyau low latency mixxx owncloud et quelques autres fonctions, sans oublié conky qui indiquera le noms de domaine: http://mon.adresse.ip/owcloud.
merci à vous et bonne journée.

Dernière modification par polorafale (Le 29/08/2014, à 21:05)


Peace and love

Hors ligne

#11 Le 29/08/2014, à 20:25

polorafale

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

bon sa se complique neutral ,
une mise à jour et op sa change de configuration tongue.
donc la nouvelle config c' est

<?php
$CONFIG = array (
  'instanceid' => 'oc06d4adc',
  'passwordsalt' => '1e002e96c8c712144ca6e77bb7',
  'trusted_domains' => 
  array (
    0 => 'localhost',
    1 => '192.192.192.192',

et je n' arrive pas à reconfigurer ce code pour changer l' ip :192.192.192.192

sed -i -r "s#^( +1 .*\")[0-9.]+(/.*)#\1$(ifconfig wlan0 | sed -rn 's/ +inet [^:]+:([0-9.]+).*/\1/p')\2#" test

Dernière modification par polorafale (Le 29/08/2014, à 20:26)


Peace and love

Hors ligne

#12 Le 29/08/2014, à 20:56

pingouinux

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

Ceci devrait marcher dans les 2 cas :

sed  -i -r "s#^( +1 .*['\"])[0-9.]+([/'\"].*)#\1$(ifconfig wlan0 | sed -rn 's/ +inet [^:]+:([0-9.]+).*/\1/p')\2#" test

Hors ligne

#13 Le 29/08/2014, à 21:04

polorafale

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

oui ça marche cooollll
mais je ne maîtrise pas du tout sed LOL
encore merci à toi, bonne soirée smile.


Peace and love

Hors ligne

#14 Le 29/08/2014, à 22:04

polorafale

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

une dernier question ?
je cherche a faire le scripte finale celui que je lancerais a la volé depuis mon bureau

le scripte ce nome owncloud_ip

#!/bin/bash

gksudo sed  -i -r "s#^( +1 .*['\"])[0-9.]+([/'\"].*)#\1$(ifconfig wlan0 | sed -rn 's/ +inet [^:]+:([0-9.]+).*/\1/p')\2#" /var/www/owncloud/config/config.php

exit 0

mais j' ai une érreure

sed: -e expression n°1, caractère 50: référence \2 invalide dans le côté droit de la commande `s'

Dernière modification par polorafale (Le 29/08/2014, à 22:06)


Peace and love

Hors ligne

#15 Le 29/08/2014, à 22:17

pingouinux

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

Il faudrait voir le contenu de /var/www/owncloud/config/config.php

Avec sed, n'utilise pas gksudo, mais sudo.

Hors ligne

#16 Le 29/08/2014, à 22:19

jplemoine

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

1 - enlève le gksudo : gksudo, c'est pour les applications graphiques ; sudo pour les scripts.
      c'est le script qui faudra lancer avec les 'droits root' par exemple :

sudo ./lance_script.sh

2 - il faut "échapper" les caractères spéciaux..
      imagines que la commande soit : cat /var/log/syslog | grep "coucou", si tu écrits echo "cat /var/log/syslog | grep "coucou""
      comment la machine va savoir quels sont les guillemets de la commande echo "..." et celle du grep.
      on va alors écrire echo "cat /var/log/syslog | grep \"coucou\"" --> les guillemets sont dans le écho ; \" sont dans la commande.
3 - Ne maîtrisant pas sed, je ne peux faire mieux que toi pour le "traduire".


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

En ligne

#17 Le 29/08/2014, à 22:31

polorafale

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

ok ok j' oublie la jolie interface de gtk  MDR
j' invoque à la place un jolie terminale histoire d être rapide lorsque je suis en déplacement big_smile.

voile le scripte qui marche impékkkk à condition d' avoir au préalable xterm d' installer wink

#!/bin/bash

xterm -e sudo sed  -i -r "s#^( +1 .*['\"])[0-9.]+([/'\"].*)#\1$(ifconfig wlan0 | sed -rn 's/ +inet [^:]+:([0-9.]+).*/\1/p')\2#" /var/www/owncloud/config/config.php

exit 0

Dernière modification par polorafale (Le 29/08/2014, à 22:34)


Peace and love

Hors ligne

#18 Le 29/08/2014, à 22:36

jplemoine

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

même si ça fonctionne, ce n'est pas "propre"...
Tu ne dois pas mettre le sudo dans le script mais appeler le script depuis un sudo (cf post #16).


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

En ligne

#19 Le 29/08/2014, à 22:46

polorafale

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

c' est vrais , mais comme je les exposé je suis dj
j ai donc les lumières, la sono , préparé les tables ma réji
plus les imprévus a géré .Alors me maitre a invoqué un terminal, si je peu m' en passé je prend.

de plus les jeunes sont très pionner appel, je me doit de leur montré une configuration qui soit le plus sexy possible.
mais si il y a mieux avec une interface graphique je prend.

Dernière modification par polorafale (Le 29/08/2014, à 23:30)


Peace and love

Hors ligne

#20 Le 29/08/2014, à 23:19

jplemoine

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

Ça ne change pas grand chose :
- dans un cas, tu lances ton script et en plein milieux, on va te demander un mot de passe

./modif_ip.sh

- Dans l'autre, tu passes en sudo (ce qui est normal puisque tu modifies un fichier système) en donnant un mot de passe.

sudo ./modif_ip.sh

Si tu veux que ce soit sexy, tu mets un lanceur sur le bureau qui lance un script qui :
- modifie le fichier de conf
- lance le logiciel

Après il y la solution de mettre en place des choses plus compliqué comme un "script" except qui simule les actions clavier et un pseudo-graphique avec zenity...

Tu double cliques sur ton icône et ça lance le logiciel avec les bons paramètres.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

En ligne

#21 Le 30/08/2014, à 07:51

pingouinux

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

Bonjour jplemoine,
Je ne sais pas ce qui est préconisé, mais si certaines commandes dans le script n'en ont pas besoin, je préfère personnellement ne mettre sudo que devant les commandes qui le nécessitent. Si on veut que le mot de passe soit demandé immédiatement, on peut toujours mettre une commande bidon en tête de script

sudo bash -c ":"

Hors ligne

#22 Le 04/09/2014, à 14:17

polorafale

Re : changer un texte dans un fichier à partir d' une variable [RESOLU]

j' ai lu sa aujourd’hui et je comprend maintenant pourquoi il ne faut pas mettre sudo .

"NB. Attention à ne pas copier coller des commandes trouvées sur le web sans savoir ce qu'elles font, c'est le meilleur moyen de casser son système, en particulier si les commandes comportent le mot-clé « sudo »."

je me suis tourner vers un scripte cron.
des qu' il est fin prêt je le post ici


Peace and love

Hors ligne