Portál AbcLinuxu, 10. května 2025 05:35

Dotaz: Vykonání příkazu přes ssh v psql - uvozovky/apostrofy

Zdeněk Zámečník avatar 3.5.2013 08:11 Zdeněk Zámečník | skóre: 26
Vykonání příkazu přes ssh v psql - uvozovky/apostrofy
Přečteno: 274×
Odpovědět | Admin
Potřeboval bych poradit, jak vyřešit následující problém. Chtěl bych se v bash skriptu připojovat přes SSH na jiný server pod rootem a zde vykonat pod uživatelem postgres příkaz v databázi. Dostal jsem se do této fáze:
sql="psql -c \"SELECT pg_start_backup('initial')\""
ssh root@$x.x.x.x su - postgres -c \'$sql\'

ERROR:  column "a" does not exist
LINE 1: SELECT pg_start_backup(a)
Zkoušel jsem všelijak escapovat a prohazovat uvozovky za apostrofy, ale už si s tím nevím rady. Vím, že by to šlo změnit konfigurací postgresu tak, abych se do něj mohl připojit pod rootem, ale jelikož se chci tímto skriptem připojovat na větší množství serverů, chtěl bych se vyhnout zásahu do jejich konfigurace. Poradí někdo, jak se z tohohle pekla uvozovek dostat ven?

Řešení dotazu:


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

Odpovědi

3.5.2013 09:28 chsajarsa | skóre: 16 | blog: V_hlouby_destneho_pralesa | Lovosice(Praha)
Rozbalit Rozbalit vše Re: Vykonání příkazu přes ssh v psql - uvozovky/apostrofy
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ja bych to udelal nejak takhle:
sql="psql -c \"SELECT pg_start_backup('initial')\""
ssh root@$x.x.x.x "su - postgres -c '$sql'"
~ QED ~
Zdeněk Zámečník avatar 3.5.2013 10:53 Zdeněk Zámečník | skóre: 26
Rozbalit Rozbalit vše Re: Vykonání příkazu přes ssh v psql - uvozovky/apostrofy
To mi právě nefunguje. K podobnému výsledku už jsem se dopracoval několika způsoby:
ERROR:  column "initial_backup" does not exist
LINE 1: SELECT pg_start_backup(initial_backup)
Nepřenesou se tam totiž ty apostrofy. Když je escapuju, tak se tam přenesou i s escape sekvencí.
Řešení 1× (Zdeněk Zámečník (tazatel))
KrisKo avatar 3.5.2013 11:33 KrisKo | skóre: 20
Rozbalit Rozbalit vše Re: Vykonání příkazu přes ssh v psql - uvozovky/apostrofy
Odpovědět | | Sbalit | Link | Blokovat | Admin
takto by to malo ist:

sql="psql -d firstDB -c \\\"SELECT id from first where name = 'item'\\\""

ssh root@localhost "su - postgres -c \"$sql\""
https://krisko210.blogspot.com
Zdeněk Zámečník avatar 3.5.2013 12:31 Zdeněk Zámečník | skóre: 26
Rozbalit Rozbalit vše Re: Vykonání příkazu přes ssh v psql - uvozovky/apostrofy
Super! Díky za pomoc.

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.