Variable als String

R

returnNULL

Mitglied
Guten Tag,

ich habe ein Problem an dem ich schon seit Stunden sitze. Zum generellen Problem im Moment:

Ich würde gerne mit einem Bash Script ein PHP-Skript erweitern.
Dafür benutze ich:
Code:
 ssh -t 192.168.0.1"cp /etc/apache2/scripts/log.php /etc/apache2/scripts/log.php.bak"
 ssh -t 192.168.0.1 "sed -e \"/einfuegen/ a shell_exec('scp root@$1.domain.de:/var/log/apache2/*access_log*.gz '.$dest_path.' ');\" /etc/apache2/scripts/log.php.bak > /etc/apache2/scripts/log.php"
 ssh -t 192.168.0.1 "rm /etc/apache2/scripts/log.php.bak"

Der ganze Spaß soll
shell_exec\('scp ********** '.$dest_path.' ');

unter die Zeile einfügen wo "#einfuegen" steht. (im PHP Script)
Leider schaffe ich es nicht den $dest_path als normalen String auszugeben.
Die Ausgabe war jedes mal:
shell_exec('scp ********** '..' ');

Ich denke ich habe mich ein wenig verrannt in der Sache.

Desweiteren hätte ich noch eine Frage ob es noch eine elegantere Lösung gibt config Dateien zu manipulieren als (Orgianal-> Orginal.backup -> Orginal.backup beschreiben -> Orginal.backup -> Kopie)


Vielen Dank

returnNULL
 
Code:
'scp root@$1.domain.de:/var/log/apache2/*access_log*.gz '

Du solltest zunächst berücksichtigen, dass "single quotes", d.h.

Code:
'

die Sonderbedeutung von

Code:
$

aufhebt.
Helfen sollte in diesen Zusammenhang

Code:
'scp root@'"$1"'.domain.de:/var/log/apache2/*access_log*.gz '
 
Vielen Dank für den Hinweis.

Code:
shell_exec('"scp root@$1.domain.de:/var/log/apache2/*access_log*.gz "'".'$dest_path'."'"  "');

mit diesem Befehl und und der Ausgabe mit Echo wird alles richtig ausgegeben.

Ausgabe: shell_exec('scp ********** '.$dest_path.' ');


Code:
ssh -t 192.168.0.1 "sed -e \"/einfuegen/ a shell_exec('"scp root@$1.domain.de:/var/log/apache2/*access_log*.gz "'".'$dest_path'."'"  "');\" /etc/apache2/scripts/log.php.bak > /etc/apache2/scripts/log.php"

Bei dem kompletten Befehl kommt leider immer noch folgende Ausgabe:

shell_exec('scp ********** '..' ');


Gruß

NULL
 
Falsch:
Code:
... $dest_path ...
Richtig:
Code:
... \$dest_path ...
 
Die von Aqualung beschriebene Methode hätte hier auch funktioniert, aber das richtige ein- und ausquoten von Single- und Doublequotes ist extrem unübersichtlich. Deshalb halte ich das Escapen für besser.
 

Ähnliche Themen

nginx+php-fpm problem

Windows clients können nicht mehr auf lange laufendes System zugreifen

Debian squeeze, Webmin, Samba Freigaben

Habe da ein Problem was nicht wegbekomme

OpenSUSE 12.1: Gnucash startet nicht mehr

Zurück
Oben