Portál AbcLinuxu, 26. dubna 2024 10:13


Dotaz: BASH spusteni rsync s $OPT ve ktere je '

13.11.2012 14:44 Hejlis
BASH spusteni rsync s $OPT ve ktere je '
Přečteno: 205×
Odpovědět | Admin
Zdravim, snazim se napsat script, ktery pousti rsync s volbou -e ''. Zrejme ale neco delam spatne, protoze stale koncim s chybou.

DEFRSYNCOPT="-avh --delete -e 'ssh -c arcfour,blowfish-cbc -oCompression=no'"

rsync $DEFRSYNCOPT /Dokumenty/ root@192.168.14.20:/Zaloha/2012-11-13_14/

Bohuzel se nedokazu prenest pres hlasku
Missing trailing-' in remote-shell command.
rsync error: syntax or usage error (code 1) at main.c(364) [sender=3.0.9]
Syntaxe je ale spravna, protoze kdyz si dam pred radek echo, prikaz rucne zkopiruju a pustim, rsync se pusti a udela co ma.

Predem dekuji za radu.

Poradi mi nekdo co delam spatne?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.11.2012 15:53 Jirka
Rozbalit Rozbalit vše Re: BASH spusteni rsync s $OPT ve ktere je '
Odpovědět | | Sbalit | Link | Blokovat | Admin
a nestačilo by dát to do uvozovek? rsync "$DEFRSYNCOPT" ...
13.11.2012 16:03 Hejlis
Rozbalit Rozbalit vše Re: BASH spusteni rsync s $OPT ve ktere je '
nee :(
13.11.2012 16:46 gůglbot
Rozbalit Rozbalit vše Re: BASH spusteni rsync s $OPT ve ktere je '
Odpovědět | | Sbalit | Link | Blokovat | Admin
http://superuser.com/questions/354361/rsync-complaining-about-missing-trailing-in-a-bash-script
14.11.2012 10:14 Hejlis
Rozbalit Rozbalit vše Re: BASH spusteni rsync s $OPT ve ktere je '
Stale spatne... :(

Tohle funguje
RSYNCOPTP=(-avh --delete -e 'ssh -c arcfour,blowfish-cbc -oCompression=no')
rsync "${RSYNCOPTP[@]}" "$RSRC" "$RDST"
ale mne to nepomuze, protoze se ke mne obsah RSYNCOPTP dostane jako promenna. A takhle jsem tam kde jsem byl...
PROMENNA="-avh --delete -e 'ssh -c arcfour,blowfish-cbc -oCompression=no'"
RSYNCOPTP=( ${PROMENNA} )
rsync "${RSYNCOPTP[@]}" "$RSRC" "$RDST"
14.11.2012 11:28 cronin | skóre: 49
Rozbalit Rozbalit vše Re: BASH spusteni rsync s $OPT ve ktere je '
Odpovědět | | Sbalit | Link | Blokovat | Admin
Bez skúšania mi napadajú dve veci, ktoré by som skúsil: escapovať apostrofy pomocou spätnej lomky a vyčleniť ssh command do samostatnej premennej (a následne použiť vyššie zmienenú radu s úvodzovkami pri expandovaní premennej).
14.11.2012 11:57 Ash | skóre: 53
Rozbalit Rozbalit vše Re: BASH spusteni rsync s $OPT ve ktere je '
Tato ultimátní varianta fungovat bude, tou proměnnou bude indeálně RSYNC_RSH zmíněné na odkazovaném webu výše. Otázka je, zda by to nešlo jednodušeji, bez nutnosti to parsovat.
14.11.2012 12:09 Ash | skóre: 53
Rozbalit Rozbalit vše Re: BASH spusteni rsync s $OPT ve ktere je '
Tedy bude fungovat ta druhá možnost, vyparsovat -e příkaz. První varianta (escapování) nic neřeší, protože rsync to prostě dostává jako samostatné proměnné
'ssh
-c
arcfour...
nebo
\'ssh
-c
arcfour...
už na vstupu.

Osobně soudím, že jiná možnost než použít RSYNC_RSH není.
Řešení 1× (frEon)
14.11.2012 12:11 Ash | skóre: 53
Rozbalit Rozbalit vše Re: BASH spusteni rsync s $OPT ve ktere je '
Osobně soudím, že jiná možnost než použít RSYNC_RSH není.

Tedy kecám :D, obecně na toto lze použít eval, ale nevím, jestli to bude i případ rsync:
eval rsync $PROMENNA
14.11.2012 12:13 Ash | skóre: 53
Rozbalit Rozbalit vše Re: BASH spusteni rsync s $OPT ve ktere je '
Jo funuje to, asi to bude nejjednodušší řešení.
14.11.2012 12:36 Hejlis
Rozbalit Rozbalit vše Re: BASH spusteni rsync s $OPT ve ktere je '
Ted jsem sem sem akorad vracel, abych napsal ze resenim je eval. A mne trvalo dva dny, nez jsem na to prisel... :)
14.11.2012 12:37 Hejlis
Rozbalit Rozbalit vše Re: BASH spusteni rsync s $OPT ve ktere je '
Kazdopadne diky :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.