Portál AbcLinuxu, 11. května 2025 04:34

Dotaz: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH

Petr Maleček avatar 18.6.2021 15:17 Petr Maleček | skóre: 29 | Plzeň - Bolevec
BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
Přečteno: 1469×
Odpovědět | Admin
Ahoj,

řeším tady takový problém. Chci si vytvořit script, který bude hlídat intenzitu signálu na anténě a v případě poklesu pod určitou hodnotu zajistit přepnutí portu na SW. Vyčítání signálu mi funguje. Podmínky mi fungují také, ale nefunguje mi předání příkazu do switche, jelikož se nejedná jen o jeden holý příkaz, ale výsledek dalšího spuštěného scriptu s určitým parametrem.

Zde je příkaz, který se spouští:

`/usr/bin/sshpass -p ${SWPW} ssh -o "StrictHostKeyChecking=no" ubnt@${SW} 'bash -s' ./ubnt.switch ${SWPW} ${PB} ${PM}`

Ve scriptu "ubnt.switch" je sled příkazů oddělených enterem, kdy se předávají 3 parametry. A co se mi nedaří je, aby se výsledek scriptu ubnt.switch (všechny jeho skrze parametry vyplněné příkazy) předal skrze SSH do antény jednotlivě, oddělené enterem.

Obsah scriptu ubnt.switch je:

enable
${1}
configure
interface 0/${2}
shutdown
exit
interface 0/${3}
no shutdown
exit

Potřebuji, aby se tyto příkazy předaly do antény (již tedy správně vyplněné). Můžete mi poradit, jak postupovat? Děkuji :-)
LinMuck, WinFuck :-P

Ř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

Petr Maleček avatar 18.6.2021 15:27 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
Odpovědět | | Sbalit | Link | Blokovat | Admin
V podstatě potřebuji "catnout" výsledek toho scriptu do antény. Samotný cat mi ale předané parametry nenahradí.
LinMuck, WinFuck :-P
18.6.2021 15:48 GeorgeWH | skóre: 42
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
Vygeneruj skript, nakopiruj ho na cielove zariadenia a tam ho pusti.

A pouzivaj SSH kluce.
Petr Maleček avatar 18.6.2021 16:02 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
SSH klíče ještě přijdou na řadu, ale to teď není podstatné. Problém je i v tom, že na vzdálené zařízení nemohu zapisovat soubory.
LinMuck, WinFuck :-P
18.6.2021 15:47 X
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
Odpovědět | | Sbalit | Link | Blokovat | Admin
Trochu to pro zacatek zjednodusim:
/usr/bin/sshpass -p $SWPW ssh -o "StrictHostKeyChecking=no" ubnt@$SW bash ubnt.switch $SWPW $PB $PM
Petr Maleček avatar 18.6.2021 16:01 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
To mi vrací:
ubnt.switch: line 3: configure: command not found
ubnt.switch: line 4: interface: command not found
ubnt.switch: line 5: shutdown: command not found
Udělal jsem to tedy tak, že se nejdříve spustí script, který generuje ty příkazy a uloží je do souboru (už vyplněné) a tento soubor pak teprve předávám anténě:

`/bin/bash ubnt.switch $SWPW $PB $PM > changes/change.$SW`
`/usr/bin/sshpass -p $SWPW /usr/bin/ssh -o "StrictHostKeyChecking=no" ubnt@$SW 'bash -s' < ./changes/change.$SW`

Bohužel stále tu mám výsledek:
./check-status: line 21: _____: command not found
Což je právě řádek s příkazem začínajícím na sshpass. Tak teď nevím, jestli opravdu 'bash -s' < ./changes... způsobí předání všech těch příkazů do vzdáleného bashe, nebo spustí vzdálený bash a ty příkazy pak spouští lokálně (což by mi nedávalo smysl).
LinMuck, WinFuck :-P
Petr Maleček avatar 18.6.2021 16:16 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak jsem zatím zjistil, že cokoliv za ... ubnt@X nevyvolá nic. Takže třeba ... ubnt@X 'help' způsobí jen přihlášení, ale spuštění příkazu help už ne.
LinMuck, WinFuck :-P
Petr Maleček avatar 18.6.2021 16:29 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
Tak nechápu, volání: /usr/bin/sshpass -p XXX ssh -o "StrictHostKeyChecking=no" -t ubnt@XXX help

Výsledek:

  _____    _
 | ____|__| | __ _  ___          (c) 2010-2019
 |  _| / _  |/ _  |/ _ \         Ubiquiti Networks, Inc.
 | |__| (_| | (_| |  __/
 |_____\__._|\__. |\___|         https://www.ui.com
             |___/

Welcome to EdgeSwitch

By logging in, accessing or using Ubiquiti Inc. (UI) products, you
acknowledge that you have read and understood the Ubiquiti Licence
Agreement (available in the WebUI and at https://www.ui.com/eula/)
and agree to be bound by its terms.


(hostname) >

Takže si můžu psát příkazy jaké chci, ale do konzole se zjevně nedostávají. Měl se vypsat help, nevypsalo se nic.
LinMuck, WinFuck :-P
18.6.2021 16:34
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
A nemáš tam mít náhodou místo option -s option -c?
Řešení 1× (Petr Maleček (tazatel))
Petr Maleček avatar 18.6.2021 16:51 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
To jsem také zkoušel a nic. Ale zajímavé je, že když udělám trochu prasárnu a udělám kombinaci s PHP, tak to funguje:

shell_exec("sshpass -p " . $argv[2]." ssh -o \"StrictHostKeyChecking=no\" ubnt@" . $argv[1] . " 'bash -s' < changes/change." . $argv[1]);

Tohle projde správně a udělá co má.
LinMuck, WinFuck :-P
Petr Maleček avatar 18.6.2021 16:57 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
Tak beru zpět, po vypsání výsledku jsem zjistil, že se to chová úplně stejně jako přímo z bashe.
LinMuck, WinFuck :-P
Petr Maleček avatar 18.6.2021 17:04 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
Tak ještě jednou odvolávám, co jsem odvolal :)) za pomocí PHP to funguje. Jen jsem si chybovou hlášku špatně spojil.
LinMuck, WinFuck :-P
18.6.2021 17:08
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
ubnt@${SW} 'bash -s' < ./ubnt.switch ${SWPW} ${PB} ${PM}

Co ta šipka?
Petr Maleček avatar 18.6.2021 18:10 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
S tou to funguje (přes shell_exec()). Každopádně ani ta nehrála ve fungování žádnou roli :-(
LinMuck, WinFuck :-P
18.6.2021 18:35
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
No já jenom, že to tam v původním dotazu nemáš.
Petr Maleček avatar 20.6.2021 19:13 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
Jo, omlouvám se, jak už jsem to upravoval vícekrát, tak jsem nekopiroval původní formát.
LinMuck, WinFuck :-P
21.6.2021 08:18 MM
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
Nesouvisí to s PATH proměnnou? Co když do skriptu přidáš kompletní cestu k příkazům? Pokud příkazy nemůže najít, mohlo by to pomoct (myšleno místo configure třeba /usr/bin/configure, nebo kde ta binárka/skript na tom stroji leží).
Ruža Becelin avatar 7.7.2021 21:09 Ruža Becelin | skóre: 40 | blog: RuzaBecelinBlog
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
Nemuze byt problem v tom sshpass? Co udela obycejne ssh s rucne zadanym heslem?
8.7.2021 16:19 .
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zadáváš příkaz, který se má spustit na serveru. Možná to vůbec nechápu, ale asi tam nechceš spouštět bash a ne na soubor, který je u tebe na lokálu.

Jestli chceš ty příkazy poslat, jako bys je ťukal po přihlášení ručně, tak je do ssh předáš na standardním vstupu. Třeba něco takového:
sshpass ... ssh ... user@host <<_EOF_ # promenne se nejdrive nahradi jejich hodnotou
enable
${SWPW}
configure
interface 0/${PB}
shutdown
exit
interface 0/${PM}
no shutdown
exit
_EOF_
8.7.2021 23:05 j
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
Odpovědět | | Sbalit | Link | Blokovat | Admin
Hele a snmp znas? Protoze to co tu vymejslis je naproto typicka vec ktera se resi prave tim. A kazda aspon trochu normalni sitova vec to umi. Tim myslim jak si cist hodnoty prakticky cehokoli, tak menit nastaveni.

BTW: "Problém je i v tom, že na vzdálené zařízení nemohu zapisovat soubory" ??? Vazne? Tam neni temp?

---

Dete s tim guuglem dopice!
Petr Maleček avatar 25.10.2022 12:13 Petr Maleček | skóre: 29 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: BASH - posílání příkazů ze scriptu na jiné zařízení skrze SSH
Odpovím - ne, SNMP tyhle parametry nepřidává, nebo minimálně v době mého dotazu nepřidávalo. Stačí ti to jako odpověď?
LinMuck, WinFuck :-P

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.