2015-03-19 1 views
1

J'essaie un script qui va installer VirtualBox Headless. Il me manque une partie pour l'accomplir. phpVirtualBox vous oblige à modifier le fichier config.php et à changer le mot de passe. La section que je suis en train de modifier est:insertion d'une ligne contenant une citation 'en utilisant sed

/* Username/Password for system user that runs VirtualBox */ 

var $username = 'vbox';<br> 
var $password = 'pass'; **********This Line***************** 

J'ai lu (homme sed) et regarda sur Internet pour trouver une solution, pas de chance.

J'ai essayé plusieurs commandes sed, mais aucune n'insèrera les marques de graduation.

J'ai pu obtenir tout sauf le ('). Ces marques doivent entourer le mot de passe pour que le fichier config.php fonctionne correctement.

Je suis en mesure de supprimer la ligne, puis essayez d'insérer une nouvelle ligne n'insère:

var $password = pass ; 

Quelqu'un peut-il s'il vous plaît me aider à comment insérer la ligne complète:

var $password 'pass'; 

Je posterai le script complet si quelqu'un est intéressé à l'utiliser.

Répondre

1

Il suffit de garder le '' inchangé et remplacer la valeur à l'intérieur:

echo "var \$password = 'pass';" | sed "[email protected]'pass'@'newpass'@" 

Résultat

var $password = 'newpass'; 
+0

echo "var \ $ mot de passe = 'passe';" | sed "s @ 'passe' @ 'newpass' @" config.php> config.php1. Cela a créé le fichier que je voulais avec le changement dont j'avais besoin. puis supprimez l'original et renommez config.php1 en config.php. Je vous remercie. –

0
echo "var \$password = 'pass';"|sed "s/\(var \$password = '\)[^']\+';/\1changed_pass\';/g" 

Il correspond au contenu var $password= 'sometext'; et garder le var $password= ' comme \1, mettez votre nouveau mot de passe à côté de \1, puis ajoutez la partie gauche ';

+0

Bonjour, vous voudrez peut-être ajouter quelques explications sur les raisons pour lesquelles votre solution proposée fonctionne. –

0

Il suffit d'utiliser sed cette façon:

sous Mac OS X:

sed -i '' "s/var $password =.*/var $password = 'newpass'/" ~/yourscript.sh 

sur Ubuntu:

sed -i "s/var $password =.*/var $password = 'newpass'/" ~/yourscript.sh 

Yourscript est juste le fichier contenant la configuration que vous voulez pour remplacer, dans ce cas celui contenant l'attribut de mot de passe

J'espère que vous trouverez cette réponse utile.

Merci.

+0

espérons que ce mot de passe ne contient pas de méta-caractère (sed POV) – NeronLeVelu