Backticks über ssh mit su -c

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
alexmamo
Beiträge: 3
Registriert: 28.08.2015 10:25:20

Backticks über ssh mit su -c

Beitrag von alexmamo » 28.08.2015 10:33:01

Guten Morgen,

ich habe hier nun eine Frage, an der ich seit ein paar Stunden grüble.
(Vielleicht Google ich auch einfach falsch oder bin momentan zu doof)
Ich habe mit einen Befehl gebaut, der auf einigen Servern etwas in die Crontab schreiben soll.

Code: Alles auswählen

for server in $( cat list ); do ssh -t $user@$server "su -c \"echo '35 * * * * $skript_das_ausgeführt_werden_soll ''\'\`/bin/hostname\`''\'  $Parameter2 $Parameter3' >> /var/spool/cron/crontabs/root \" "; done
Das einzige Problem hierbei ist, dass ich will, dass `/bin/hostname` auch in der Crontab steht. Bisher habe ich es nur geschafft, dass er das Kommando auf dem Zielserver ausführt und den Output in single Quotes setzt.
Der fertige Befehl in der Crontab soll dann so aussehen:

Code: Alles auswählen

35 * * * * $skript_das_ausgeführt_werden_soll `/bin/hostname`  $Parameter2 $Parameter3
Ich weiß nicht, wie ich das anstellen soll (Wiegesagt, vielleicht auch zu doof)
Hat hierfür jemand eine Lösung parat?

uname
Beiträge: 12399
Registriert: 03.06.2008 09:33:02

Re: Backticks über ssh mit su -c

Beitrag von uname » 28.08.2015 13:02:19

Statt Backticks würde ich $() versuchen und dann vielleicht so:

Code: Alles auswählen

echo "Hallo \$(/bin/hostname)"
Hallo $(/bin/hostname)
Ob das so geschachtelt funktioniert weiß ich nicht. Vielleicht kannst du die Verschachtelung irgendwie minimieren. Vielleicht liegt es sogar an der Verschachtelung oder an dem "su -c". Ich denke weniger wäre hier mehr.

alexmamo
Beiträge: 3
Registriert: 28.08.2015 10:25:20

Re: Backticks über ssh mit su -c

Beitrag von alexmamo » 28.08.2015 13:15:38

Ohne su -c wird es leider nicht klappen, da aus Sicherheitsgründen ein einloggen als root unmöglich ist.

Leider hat deine Idee auch nicht funktioniert :-/

Output:

Code: Alles auswählen

35 * * * * $skript_das_ausgeführt_werden_soll $hostname  $Parameter2 $Parameter3
Auch hier führt er das Kommando aus.

Das:

Code: Alles auswählen

'\`\`'/bin/hostname'\`\`'
produziert schonmal: /bin/hostname, jedoch ohne Backticks. Noch jemand eine Idee?

alexmamo
Beiträge: 3
Registriert: 28.08.2015 10:25:20

Re: Backticks über ssh mit su -c

Beitrag von alexmamo » 28.08.2015 14:46:30

Problem solved: \\\`/bin/hostname`\\\

Antworten