Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: ping a ssh  (Přečteno 2929 krát)

beer

  • Host
ping a ssh
« kdy: 28 Listopadu 2011, 22:17:13 »
Ahoj, může někdo poradit jak na skript, kterej by nejprve v pravidelných intervalech zjišťoval, zdali je stroj online a v případě, že by se připojil, tak by vykonal příkaz - připojil se například přes ssh a připojil vzdálený pc.

Napadlo mne, že by to mohlo být nějak takto:

Kód: [Vybrat]
#!/bin/bash
ping -I n2n-gabi -i 10 10.2.2.1 && ssh root@10.2.2.1

Ale to je asi blbost...

donny

  • Závislák
  • ***
  • Příspěvků: 1861
Re:ping a ssh
« Odpověď #1 kdy: 28 Listopadu 2011, 22:43:00 »
Kód: [Vybrat]

#!/bin/bash

remote="192.168.2.2"

ret=$(ping -c 1 $remote | grep icmp_seq | wc -l)

[ $ret -eq 0 ] || exit 1

# dalsi prikazy se provedou jen pokud ping prosel
 
ssh user@$remote

« Poslední změna: 28 Listopadu 2011, 22:46:13 od donny »
archlinux @ i7-6700/GTX1080 8G/32G DDR4/.5TB NVMe/WD RED 3TB | Raspbian 8 @ Raspberry Pi
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better!

beer

  • Host
Re:ping a ssh
« Odpověď #2 kdy: 28 Listopadu 2011, 22:52:32 »
Super, díky, vyzkouším.

beer

  • Host
Re:ping a ssh
« Odpověď #3 kdy: 29 Listopadu 2011, 00:31:32 »
Nepřipojí se, je potřeba zadat heslo a to bych musel u toho furt sedět. Ideální by bylo to heslo integrovat do souboru. Samozřejmě, někdo může namítat, že to není příliš bezpečné, že bych si měl vygenerovat klíče. To je trošku problém. Fyzický přístup k druhému počítači nemám, měl bych tam mít přístup přes ssh a n2n, nicméně je skoro pořád vypnutý a nevím, kdy se zrovna zapne. Proto asi jiné řešení aktuálně není, než to heslo někam uložit, aby se navázalo spojení.

Tak zkouším prozatím na localhostu, jak by to mělo vypadat, a bohužel nemohu přijít, jak to heslo integrovat  ???
Kód: [Vybrat]
#!/bin/bash
remote="localhost"
heslo="mojeheslo"
ret=$(ping -c 1 $remote | grep icmp_seq | wc -l)

[ $ret -eq 0 ] || exit 1

# dalsi prikazy se provedou jen pokud ping prosel
 
ssh user@$remote $heslo

Jo a bylo by možné logovat úspěšné navázání spojení?
« Poslední změna: 29 Listopadu 2011, 00:34:13 od beer »

jmp

  • Host
Re:ping a ssh
« Odpověď #4 kdy: 29 Listopadu 2011, 07:27:20 »
jen nejak nechapu, proc to rovnou nezkusit pripojit na tom sshcku (funkcne v tom nebude rozdil...)

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:ping a ssh
« Odpověď #5 kdy: 29 Listopadu 2011, 08:48:26 »
Kód: [Vybrat]
ret=$(ping -c 1 $remote | grep icmp_seq | wc -l)

[ $ret -eq 0 ] || exit 1
o.O i'm bleeding from eyes ...

nestacilo by proste:

Kód: [Vybrat]
ssh 192.168.50.82 -o ConnectTimeout=2
+ vygenerovane keys

[edit: po rozdeleni pro uplnost]presne jak rika jmp to v realu funguje takto

client vysila standardni ARP who-has metodou jako u pingu dotaz na prezenci hosta a timeout je zde resen v ssh klientu samotnem, takze z proceduralniho hlediska je to stejne !! (resp. usetrime 90% utilizace ;))

Kód: [Vybrat]
10:08:12.400419 ARP, Request who-has 192.168.60.119 (Broadcast) tell s10u7-esx.boocousa.us, length 46
10:08:13.400471 ARP, Request who-has 192.168.60.119 (Broadcast) tell s10u7-esx.boocousa.us, length 46
« Poslední změna: 30 Listopadu 2011, 13:24:25 od ntz_reloaded »
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

beer

  • Host
Re:ping a ssh
« Odpověď #6 kdy: 29 Listopadu 2011, 12:21:14 »
Máte pravdu, příkaz od ntz by byl jednodužší.

Nicméně první skript se mi líbí víc, a to z toho důvodu, že bych na něm mohl dál stavět, například příkaz na připojení nahradit jiným příkazem, typu oznámení na ploše, že je ten a ten počítač online.
Ještě jsem to moc nezjišťoval, jak se to dělá, jestli nějaké libnotify nebo něco takového.

Nebo bych mohl ten script dále rozšiřovat o mount, rsync nějaké složky, atd.
Nějaké menší úpravy bych snad zvládl metodou pokus omyl. Je pravda, že mi ale chybí základy a s angličtinou na tom nejsem zrovna nejlépe. Například včera jsem si chtěl smazat soboury v domovské složce, které začínájí ~.
Napsal jsem něco jako rm -r ~* a hádejte, jak to dopadlo  ;D

beer

  • Host
Re:ping a ssh
« Odpověď #7 kdy: 30 Listopadu 2011, 02:55:55 »
Tak, zkoušel jsem druhou variantu od ntz, ale ta nefunguje, v případě že pc s ip adresou není zapojené, tak to hodí status Connection timed out.

pc s ip 10.2.2.1 je offline
Kód: [Vybrat]
medved@ubuntu-pc:~$ ssh 10.2.2.1 -o ConnectTimeout=2
ssh: connect to host 10.2.2.1 port 22: Connection timed out
medved@ubuntu-pc:~$

pc s ip 10.2.2.2, které je online (localhost)
Kód: [Vybrat]
medved@ubuntu-pc:~$ ssh 10.2.2.2 -o ConnectTimeout=2
The authenticity of host '10.2.2.2 (10.2.2.2)' can't be established.
ECDSA key fingerprint is **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:
Are you sure you want to continue connecting (yes/no)?

Musím bohužel kontatovat, že nefungují spolehlivě ani jeden. První varianta nehodí sice time out, ale skript ve většině případů skončí během pár vteřin sám. Někdy se ale z nějakého neznámého důvodu drží a čeká.
Vypadá to, že na ty exit_statusy jsou tedy náchylné oba dva příkazy.
« Poslední změna: 30 Listopadu 2011, 03:01:21 od beer »

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:ping a ssh
« Odpověď #8 kdy: 30 Listopadu 2011, 13:26:35 »
Tak, zkoušel jsem druhou variantu od ntz, ale ta nefunguje, v případě že pc s ip adresou není zapojené, tak to hodí status Connection timed out.

pc s ip 10.2.2.1 je offline
Kód: [Vybrat]
medved@ubuntu-pc:~$ ssh 10.2.2.1 -o ConnectTimeout=2
ssh: connect to host 10.2.2.1 port 22: Connection timed out
medved@ubuntu-pc:~$

OMG, a co jineho to ma delat ? takhle to je spravne.
Pokud chces mermomoci skript, tak to udelej takhle nejak (podminka while pro persistentni cyklus)

Kód: [Vybrat]
while sleep 5; do
    if ! ping -W2 -c1 192.168.50.199; then
        echo tady bude nejaka akce ze se to nepinglo;
    else
        echo tady to je v pohode;
    fi
done
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:ping a ssh
« Odpověď #9 kdy: 30 Listopadu 2011, 13:30:28 »
ps. temo rozdeleno a zmoderovano: http://forum.ubuntu.cz/index.php?topic=60210.0 (informace jsem dal sem) ..
dalsi diskuse nepripoustim, placte pokud se citite dotceni chcete-li.

ave, ntz
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

beer

  • Host
Re:ping a ssh
« Odpověď #10 kdy: 30 Listopadu 2011, 14:05:33 »

OMG, a co jineho to ma delat ? takhle to je spravne.
Pokud chces mermomoci skript, tak to udelej takhle nejak (podminka while pro persistentni cyklus)

Kód: [Vybrat]
while sleep 5; do
    if ! ping -W2 -c1 192.168.50.199; then
        echo tady bude nejaka akce ze se to nepinglo;
    else
        echo tady to je v pohode;
    fi
done

To by snad šlo. Jestli znamená persistentní cyclus to, že to neskončí předčasně timeoutem a script vyčká, až bude druhá strana online a pak teprve vykoná nějakou akci.

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:ping a ssh
« Odpověď #11 kdy: 30 Listopadu 2011, 14:16:39 »
persistentni znamena, ze cyklus

while sleep 5; do $foo; done

provadi akci $foo (v nasem pripade overovani zdali-je host up + prislusne akce) kazdych 5 sekund a sam o sobe nikdy nekonci.
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

 

Provoz zaštiťuje spolek OpenAlt.