Portál AbcLinuxu, 12. května 2025 09:21

Dotaz: jak ve skriptu spustit slozitejsi prikaz na vzdalenem PC?

20.8.2007 11:13 David | skóre: 21 | Praha
jak ve skriptu spustit slozitejsi prikaz na vzdalenem PC?
Přečteno: 675×
Odpovědět | Admin
Ahoj,
vim, ze jde

ssh tonda@tonduv.comp.cz "command"

coz udela, ze na tondovo pocitaci pusti command. Jenze co kdyz ten command je nejaky strukturovany prikaz, napr. if, fakt to nechci psat na jednu radku, chtel bych si ten prikaz napsat "hezky" a urcite bych nechtel posilat na tonduv pocitac nejaky skript a ten tam poustet (je to sice reseni ale moc pekne ne).Diky za kazdou radu.
David
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

20.8.2007 11:17 Ash | skóre: 53
Rozbalit Rozbalit vše Re: jak ve skriptu spustit slozitejsi prikaz na vzdalenem PC?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nechápu v čem přesně je problém?
ssh localhost "if true; then
>   echo its true
> else
>   echo false
> fi"
20.8.2007 11:37 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: jak ve skriptu spustit slozitejsi prikaz na vzdalenem PC?
jj, funguje to, bylo mi receno, ze se to musi psat na jeden radek, tak me nenapadlo, ze tomu tak neni. Diky, David.
20.8.2007 13:10 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: jak ve skriptu spustit slozitejsi prikaz na vzdalenem PC?
tak me to stejne nejak nejde
ssh root@comp.cz '
if ps aux | grep "proces" | grep "bin" 1>/dev/null 2>/dev/null
then
        printf "%-80s %-80s" "proces is" "RUNNING"
        echo ""
else
        printf "%-80s %-80s" "proces is" "STOPPED!!"
        echo ""
fi'
kdyz to pustim z comp1.cz, tak mi to pise proces is running, ale kdyz dam na comp2.cz
ps aux | grep "proces" | grep "bin" 1>/dev/null 2>/dev/null
a pak
echo $?
tak odpoved je 1, tedy puvodni odpoved mela byt proces is stopped.
20.8.2007 13:42 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: jak ve skriptu spustit slozitejsi prikaz na vzdalenem PC?

Tak zkuste

  ssh -l root comp.cz <<EOT
  ...
  EOT

případně ještě přepínač '-t', pokud spouštíte něco, co potřebuje terminál.

20.8.2007 14:33 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: jak ve skriptu spustit slozitejsi prikaz na vzdalenem PC?
jo, tohle funguje, akorat kdyz to pustim z comp1, tak mi to pise
Pseudo-terminal will not be allocated because stdin is not a terminal.
stdin: is not a tty
Pseudo-terminal will not be allocated because stdin is not a terminal. stdin: is not a tty
20.8.2007 14:57 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: jak ve skriptu spustit slozitejsi prikaz na vzdalenem PC?
Přečtěte si i ten dodatek pod příkladem…
20.8.2007 15:16 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: jak ve skriptu spustit slozitejsi prikaz na vzdalenem PC?
tak po -t je vse stejne, po -T je tam jen
stdin: is not a tty
Sem to nakonec poresil takto:
ssh  root@comp.cz << _EOF_ 2>/dev/null
Dekuji za odpovedi
20.8.2007 13:47 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: jak ve skriptu spustit slozitejsi prikaz na vzdalenem PC?
1) 1>/dev/null 2>/dev/null se dá pokud vím zapsat jako &> /dev/null
2) ps aux | grep "proces" | grep "bin"... - man pidof - možná vhodnější..
3) Použít xargs:
$ cat ~/testingfile
cat: /home/user/testingfile: No such file or directory

$ cat scriptik.sh
touch ~/testingfile
echo "prvni" >> ~/testingfile
echo "druhy" >> ~/testingfile
echo "treti" >> ~/testingfile

$ xargs -0 -a scriptik.sh ssh user@localhost
user@localhost's password:

$ cat ~/testingfile
prvni
druhy
treti
20.8.2007 13:30 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: jak ve skriptu spustit slozitejsi prikaz na vzdalenem PC?
Odpovědět | | Sbalit | Link | Blokovat | Admin
A co takhle? Například napíšu skript, který nazvu "pokus.py" a ten bude obsahovat tohle:
from __future__ import division
import socket
print socket.gethostname()
s = [x.split() for x in file('/proc/net/dev') if 'eth0' in x][0][0]
bytes = int(s.split(':')[1])
gb = bytes/1024/1024/1024
print '%.2f GiB' %gb
Tedy vypíše hostname a ukáže, kolik gigabajtů se stáhlo přes eth0. No a ten můžu ladit u sebe a nakonec pustit na různých strojích aniž bych ho tam kopíroval:
$ ssh honza@pumpa.ath.cx python < pokus.py 
pumpa.ath.cx
0.95 GiB
$ ssh honza@chorchoj.ath.cx python < pokus.py 
chorchoj
2.50 GiB
20.8.2007 14:31 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: jak ve skriptu spustit slozitejsi prikaz na vzdalenem PC?
no jenze ja se proste chci vyhnout nejakemu vytvareni dalsich soboru (v priklade od Vas je to pokus.py), potreboval bych to napsat do jednoho souboru.
20.8.2007 15:41 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: jak ve skriptu spustit slozitejsi prikaz na vzdalenem PC?
Ajo. Takže řekněme, že chci zjistit, jestli na vzdáleném stroji běží bash:
#!/usr/bin/python
from subprocess import *
cmd = ['ssh', 'honza@chorchoj.ath.cx', 'pgrep', 'bash']
pr = Popen(cmd, stdout = PIPE)
if pr.stdout.read(): print 'Bezi'
Vypsalo to "Bezi", tak je to nejspíš pravda.

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.