Script Bash (débutant) - manipulations chaines de charactéres ?

Script Bash (débutant) - manipulations chaines de charactéres ? - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 20-01-2015 à 15:26:57    

Bonjour aux génies du scripts BASH. J'ai besoin d'aide.
 
Je doit faire un script pour transformer une phrase en une commande concernant les SUDO. Voilà la phrase:
 
Bla bla bla USER1@SERVER execute any command with sudo as the user USER2@SERVER
 
Elle doit être transformer ainsi:
 
USER1 SERVER.domainname=(USER2)NOPASSWD:ALL
 
Quelqu'un a-t-il une idée? Avec quel commande de découpage de chaine de charactéres puis-je faire cela ?
 
 :jap:


Message édité par galactus2003 le 22-01-2015 à 00:30:30
Reply

Marsh Posté le 20-01-2015 à 15:26:57   

Reply

Marsh Posté le 21-01-2015 à 15:22:11    

Bonjour,
 
On voit pas trop le lien entre les 2 phrases avec le code couleur sur des éléments très différents.
Tu peux utiliser le code couleur uniquement pour ce qui doit être repris entre les 2 expressions ?
 


---------------
Les avis, c'est comme les anus, tout le monde en a un.
Reply

Marsh Posté le 22-01-2015 à 00:34:09    

l4nkou a écrit :

Bonjour,

 

On voit pas trop le lien entre les 2 phrases avec le code couleur sur des éléments très différents.
Tu peux utiliser le code couleur uniquement pour ce qui doit être repris entre les 2 expressions ?

 


 

Bonjour. En fait, les couleurs c'est ce qui doit être remplacé.

 

AH, bonne idée, en fait, oui, ce qui doit être repris de la première phrase, c'est USER1, SERVER, USER2. Et ils sont autour de l'@. Alors, comment on les prends? La chaine qui contient un @ entouré d'un espace ?

Message cité 1 fois
Message édité par galactus2003 le 22-01-2015 à 00:36:32
Reply

Marsh Posté le 22-01-2015 à 07:55:36    

Je pense que tu peux utilisé les commandes, "whoami" et "hostname" pour connaitre ton user en dynamique, et redirigé la sortie vers le terminal de ton utilisateur.  
 

Reply

Marsh Posté le 22-01-2015 à 10:19:02    

galactus2003 a écrit :


 
Bonjour. En fait, les couleurs c'est ce qui doit être remplacé.
 
AH, bonne idée, en fait, oui, ce qui doit être repris de la première phrase, c'est USER1, SERVER, USER2. Et ils sont autour de l'@. Alors, comment on les prends? La chaine qui contient un @ entouré d'un espace ?


 

Code :
  1. echo "Bla bla bla USER1@SERVER" | cut -d'@' -f 1,2 | tr '@' ' '
  2. =
  3. Bla bla bla USER1 SERVER


 
À toi de voir comment virer le "Bla bla bla" et insérer le tout dans ta commande.  

Spoiler :

awk peut être ton ami.

Reply

Marsh Posté le 22-01-2015 à 10:47:49    

Rawkins68 a écrit :


 

Code :
  1. echo "Bla bla bla USER1@SERVER" | cut -d'@' -f 1,2 | tr '@' ' '
  2. =
  3. Bla bla bla USER1 SERVER


 
À toi de voir comment virer le "Bla bla bla" et insérer le tout dans ta commande.  

Spoiler :

awk peut être ton ami.



 
 
Hum, merci. mais je comprends déjà pas ta première ligne, lol. Bon, ok, je vais regarder AWK, merci rawkins68.

Reply

Marsh Posté le 22-01-2015 à 10:50:44    

tachiruko a écrit :

Je pense que tu peux utilisé les commandes, "whoami" et "hostname" pour connaitre ton user en dynamique, et redirigé la sortie vers le terminal de ton utilisateur.  
 


 
Non, non, pas du tout cela. je reçois la première ligne en texte. Je veux la mettre en entrée d'un petit script pour qu'il me la sorte dans la forme 2 de façon à pas le faire à la main, car j'en reçoit beaucoup par jour et je voudrais automatiser cela.

Reply

Marsh Posté le 22-01-2015 à 10:51:45    

galactus2003 a écrit :


 
 
Hum, merci. mais je comprends déjà pas ta première ligne, lol. Bon, ok, je vais regarder AWK, merci rawkins68.


 
En fait, cut va te permettre de couper ta chaine de caractères à un certain délimiteur.
Par exemple, tu as quelque chose comme :
bonjour:salut:hello
 
On voit bien que le délimiteur est ':', du coup, si tu veux garder seulement le premier mot :

Code :
  1. echo "bonjour:salut:hello" | cut -d':' -f 1


L'option -f permet de spécifier le champ à garder.
Si tu veux garder le troisième mot :

Code :
  1. echo "bonjour:salut:hello" | cut -d':' -f 3


Si tu veux garder le premier et le troisième :

Code :
  1. echo "bonjour:salut:hello" | cut -d':' -f 1,3


 
Ainsi de suite.
 
tr dans ce cas là, permet de remplacer l'arobase par un espace.
 
Et évidemment, pour plus de détails :
man tr
man cut
man awk

Reply

Marsh Posté le 22-01-2015 à 15:17:02    

salut,
 

Code :
  1. echo "Bla bla bla USER1@SERVER execute any command with sudo as the user USER2@SERVER" | sed 's/.* \([^@]*@[^ ]*\).* \([^@]*@[^ $]*\)/\1.domainname=(\2/g; s/@/ /g;s/ \w*$/)NOPASSWD:ALL /'
  2. USER1 SERVER.domainname=(USER2)NOPASSWD:ALL

Reply

Marsh Posté le 23-01-2015 à 17:07:25    

whoua, merci!
 
Bon, je vais décrypter tous ça et voir ce que cela donne.
 
Merci à vous, les experts  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed