/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Hvorfor fejler Tcl ved ping?
Fra : Hans


Dato : 19-01-08 14:32

Jeg har følgende Tcl kode, som jeg ikke helt forstår hvorfor fejler - dvs.
det fejler kun, når IP adressen ikke findes.

Denne fungere fint og outputtet er ok:

set pingable [ exec /bin/ping -c 2 192.168.1.1 ]
puts $pingable
exit

Output:
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.039 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.040 ms
--- 192.168.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.039/0.039/0.040/0.006 ms

Nedenstående IP adresse findes ikke og Tcl laver en "child process exited
abnormally" - hvorfor og hvordan undgår jeg det?

set pingable [ exec /bin/ping -c 2 192.168.1.111 ]
puts $pingable
exit

Output:
PING 192.168.1.111 (192.168.1.111) 56(84) bytes of data.
From 192.168.1.111 icmp_seq=1 Destination Host Unreachable
From 192.168.1.111 icmp_seq=2 Destination Host Unreachable
--- 192.168.1.111 ping statistics ---
2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 1000ms
, pipe 2
child process exited abnormally
while executing
"exec /bin/ping -c 2 192.168.1.111 "
invoked from within
"set pingable [ exec /bin/ping -c 2 192.168.1.111 ]"
(file "./my_script.tcl" line 32)



 
 
Michael Zedeler (19-01-2008)
Kommentar
Fra : Michael Zedeler


Dato : 19-01-08 16:56

Hans wrote:
> Jeg har følgende Tcl kode, som jeg ikke helt forstår hvorfor fejler - dvs.
> det fejler kun, når IP adressen ikke findes. [klip]
> set pingable [ exec /bin/ping -c 2 192.168.1.111 ]
> puts $pingable
> exit
> [klip]
> From 192.168.1.111 icmp_seq=1 Destination Host Unreachable
> [klip]
> child process exited abnormally

Kommer det bag på dig at ping brokker sig, når man beder om at pinge
ikke-eksisterende adresser? Dertil er det da kun rimeligt at tcl
viderebringer besked om at ping fejlede.

Så vidt jeg kan se kan du muligvis løse problemet med en catch. Se manualen:

http://www.tcl.tk/man/tcl8.5/tutorial/Tcl26.html

Hvis det ikke virker, så bemærk at ping muligvis ikke returnerer en
fejlkode, men blot skriver ud på stderr. I så fald kan du løse problemet
ved at sende stderr et andet sted hen.

Mvh. Michael.

Hans (19-01-2008)
Kommentar
Fra : Hans


Dato : 19-01-08 17:15

> Kommer det bag på dig at ping brokker sig, når man beder om at pinge
> ikke-eksisterende adresser?

ping skal naturligvis fejle, det er klart, men jeg vidste ikke at Tcl også
gjorde. "Normalt" i Bash kigger jeg bare på outputtet og skal ikke tænke på
om det bliver skrevet til StdOut eller StrErr.

> Så vidt jeg kan se kan du muligvis løse problemet med en catch. Se
> manualen:
> http://www.tcl.tk/man/tcl8.5/tutorial/Tcl26.html

Denne virker perfekt:
catch { exec ping -c 2 192.168.1.111 } ping

Tak.



Søg
Reklame
Statistik
Spørgsmål : 177547
Tips : 31968
Nyheder : 719565
Indlæg : 6408797
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste