sed parancs SSH remote-on keresztül

Fórumok

Csináltam még anno egy scriptet, ahol menüből tudok választani, hogy az adott ssh-val mit szeretnék csinálni. Ennek része, hogy lehet olyat csinálni, hogy a megadott szervereken (ezt fzf-el oldom meg) lefuttat egy megadott parancsot. És itt szeretnék egy bonyolultabb sed parancsot kiadni, de az adott szerveren mikor tesztelem, akkor teljesen elkutyulja.

A parancs amit ha lokálisan kiadok, akkor működik:
sed 's/if \[ \$last_exit_code -ne 0 \]/if \[ \$last_exit_code -ne 0 \] \&\& \[ \$last_exit_code -ne 130 \]/g' .bashrc

Ez azt csinálja, hogy a if [ $last_exit_code -ne 0 ] -t lecseréli if [ $last_exit_code -ne 0 ] && [ $last_exit_code -ne 130 ] -ra

Gondoltam escape karaktert használok, hogy ne zavarodjon meg, de ez nem jött be, vagy rossz helyre teszem :) Hibakód nélkül lefut ssh remote parancsként futtatva, de több if [-el kezdődő parancsnál is lefut, és szétkutyulná a file-t.

Hozzászólások

Csak egy kérdés merült fel bennem a poszt olvasása közben.

Ezt nem lehetne konfig management tool-ra pl. Ansible, Puppet bízni?

Hasonlóval én is próbálkoztam, sok idő elment vele, sztem. feleslegesen.

Ha jól emlékszem, akkor vagy 'bash -c "parancs"' lett a megoldás vagy az, hogy azt a csodálatos sed parancsot egy sima fájlból kellett felolvastatni az ssh parancs futásánál.

Közben megcsináltam "kézzel". Vágólapra helyeztem a parancsot, beloggoltam az összes gépre (szerencsére ezt is tudja a scriptem egy kattintásra), aztán ctrl+v, majd exit. aztán megint ctrl+v majd exit :D Végülis meg lettem 2 perc alatt, csak azért kíváncsi vagyok, hogy miben akad el.

Ansible és Puppet ezekre a minimal low resources szerverekre túlzás lenne. Meg azt is mire bekonfigolnám. Alapvetőleg csak most futottam bele ilyen gondba 4-5 év alatt. Más megevett rendesen, de ez már kakukk neki.

A sed ele tegyel egy echo -t, es rakd le a kimenetet az adott gepre. Latni fogod, hogy mit alkotott, igy latod, hogy hova milyen escape kell.  Ha kireszelted, mehet echo nelkul.

A masik megoldas, hogy a kesz parancsbol base64 string, az atmegy, es a masik oldalon kibontas utan eval.

A harmadik mar file muvelettel jar, helyben legeneralod (ha nem statikus a tartalom) majd atviszed script filekent, adsz neki futasi jogot es lefuttatod.