Fehlermeldung 13 wird vom system gemeldet

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Fehlermeldung 13 wird vom system gemeldet

Beitrag von Duff » 20.11.2006 19:46:08

Hallo,

ich würde gerne wissen, was diese Fehlermeldung mit errorcode 13 bedeutet.
Konnte in den manuals von ifconfig, ifup und interfaces nichts finden.

Code: Alles auswählen

system /usr/bin/sudo /sbin/ifup eth2 failed: 13 at /home/daniel/scripts/select_wlan.pl line 93, <STDIN> line 1. 
Der Aufruf geschieht zwar aus einem perl-Skript heraus, aber die Fehlermeldung bezieht sich ja auf das sudo ifup eth2.
(eth2 ist übrigens mein wlan-device, wenn das noch wichtig sein sollte.)

Danke.
Oh, yeah!

Benutzeravatar
feltel
Webmaster
Beiträge: 10477
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 20.11.2006 19:48:51

Der Fehler kommt vom Aufruf in Deinem Script. Nun ist allerdings die Frage was genau auf Zeile 93 dort aufgerufen wird.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 20.11.2006 20:08:30

Ok, die Zeile 93 ist die, indem der system-Aufruf steht.

Code: Alles auswählen

...
                        if ("$k" eq "$input"){
                                # Die SSID des Netzes in eine Datei schreiben
                                open (DAT,">","$datei") or die "Konnte die Datei \"$datei\" nicht öffnen!\n";
                                print DAT $input;
                                close(DAT);
                                print "Verbindung zu WLAN-Netz \"$input\" wird aufgebaut...\n";
                                #my @system=`/usr/bin/sudo /sbin/ifup eth2`;
                                #print join("--", @system)."\n";
                                my @args=("/usr/bin/sudo /sbin/ifup eth2");
                                system(@args) == 0
                                        or die "system @args failed: $?";
                        } 
...
Ich dachte aber, dass die Fehlermeldung nicht vom perl-Skript kommt (also durch perl zustande kommt), sondern durch den UNIX/LINUX-Befehl, oder nicht?
Oh, yeah!

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 21.11.2006 09:42:36

Die 13 ist der Return-Code des sudo-Aufrufs, der wiederum den Return-Code des ifup-Aufrufs durchreicht. So stehts zumindest in der Manpage von sudo. Was nun ein Return-Code 13 bei ifup bedeutet, das weiss ich auch nicht.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 21.11.2006 10:30:50

Danke,

aber wie kann ich das jetzt rausfinden?

Ich konnte zumindestens in der manpage zu ifup oder ifconfig nichts finden.
Oh, yeah!

123456
Beiträge: 6126
Registriert: 08.03.2003 14:07:24

Beitrag von 123456 » 21.11.2006 10:41:41

Duff hat geschrieben:aber wie kann ich das jetzt rausfinden?

Ich konnte zumindestens in der manpage zu ifup oder ifconfig nichts finden.
Die Sourcen vom Paket ifupdown ziehen und reinschauen?
Wenn der RC 13 von dort kommt, sollte es ja irgendwo drinstehen, denke ich mal...

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 21.11.2006 11:02:43

In den Sourcen von ifupdown kommt kein exit(13) vor.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 21.11.2006 11:24:57

nepos hat geschrieben: In den Sourcen von ifupdown kommt kein exit(13) vor.
Mmh...schade, ich konnte auch nichts finden.

Bei google war ich bisher auch völlig erfolglos.

Das Problem tritt ja auch nicht jedes Mal mit diesem Error auf. Nur würde ich gerne wissen, warum der Fehler manchmal auftritt.
Oh, yeah!

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 21.11.2006 11:33:26

Hm, hast du schon mal in den Logfiles auf dem Rechner geschaut, ob da was auffälliges steht, wenn dein Skript mit dem Fehler 13 abbricht?
Eventuell liegts nicht an deinem Aufruf.

123456
Beiträge: 6126
Registriert: 08.03.2003 14:07:24

Beitrag von 123456 » 21.11.2006 11:34:06

Na wenn da nichts zu finden ist, kann es auch nicht vom ifup kommen, oder?

Irgendwie kommt mir dieser Code bekannt vor...Wenn Du Google anschmeisst, suche auch mal nach system calls mit return code 13 oder so....

123456
Beiträge: 6126
Registriert: 08.03.2003 14:07:24

Beitrag von 123456 » 21.11.2006 11:50:39

...noch eine Idee...
Wenn das Problem nur manchmal auftritt, könnte es mit ifstate zusammenhängen (man ifup). Versuch mal ifup mit der Option --force aufzurufen.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 21.11.2006 12:33:35

ub13 hat geschrieben: Wenn das Problem nur manchmal auftritt, könnte es mit ifstate zusammenhängen (man ifup). Versuch mal ifup mit der Option --force aufzurufen.
Danke, werde nochmal googlen und dann mal die Option --force versuchen.

Schonmal soweit Danke. Vielleicht klappt's ja :roll:
Oh, yeah!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 25.11.2006 11:59:46

Mmh...so...

der Fehler tritt leider trotz der Option --force doch noch manchmal auf.
Hier mal eine Beispiel Fehlermeldung:

Code: Alles auswählen

daniel@daniel-laptop:~$ wlan
 1.WLAN-Netz: WLAN01
Mit welchem der oberen WLAN-Netze soll eine Verbindung aufgebaut werden?
Bitte das gewünschte WLAN-Netz eingeben: WLAN01
Verbindung zu WLAN-Netz "WLAN01" wird aufgebaut...
system /usr/bin/sudo /sbin/ifup --force eth2 failed: 13 at /home/daniel/scripts/select_wlan.pl line 93, <STDIN> line 1.
Bei google konnte ich leider auch nichts zum error system call 13 finden.

Habe mal das komplette Skript nach hiergepostet.

Vielleicht hat ja noch jemand nee Idee :idea:

Wollte das ganze Szenario nämlich sonst mal ins Wiki posten (natürlich nur, wenn es auch richtig funktioniert!).
Oh, yeah!

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 27.11.2006 09:40:09

Hast du denn mittlerweile auch mal in deine Logfiles geschaut, ob du da eventuell noch mehr Infos findest, was da genau schiefgegangen ist?

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 27.11.2006 18:52:24

Danke, aber kann in den Logfiles nichts wirkliches finden.

Code: Alles auswählen

Nov 27 18:46:33 localhost sudo:   daniel : TTY=pts/1 ; PWD=/home/daniel/.kde/Autostart ; USER=root ; COMMAND=/sbin/i
fup --force eth2
Nov 27 18:46:50 localhost su[9392]: Successful su for root by daniel
Nov 27 18:46:50 localhost su[9392]: + pts/2 daniel:root
Nov 27 18:46:50 localhost su[9392]: (pam_unix) session opened for user root by (uid=1000)
Nov 27 18:47:01 localhost CRON[9459]: (pam_unix) session opened for user daniel by (uid=0)
Nov 27 18:47:01 localhost CRON[9459]: (pam_unix) session closed for user daniel
Nov 27 18:47:02 localhost sudo:   daniel : TTY=pts/1 ; PWD=/home/daniel/.kde/Autostart ; USER=root ; COMMAND=/sbin/i
fup --force eth2
Beim ersten Aufruf hat es funktioniert und beim zweiten Aufruf nicht. ABer einen Fehler kann ich hier nicht finden.

Im daemon.log steht auch nur eine erfolgreiche Verbindung drin

Code: Alles auswählen

Nov 27 18:46:34 localhost dhclient: 
Nov 27 18:46:34 localhost dhclient: Please contribute if you find this software useful.
Nov 27 18:46:34 localhost dhclient: For info, please visit http://www.isc.org/dhcp-contrib.html
Nov 27 18:46:34 localhost dhclient: 
Nov 27 18:46:34 localhost dhclient: sit0: unknown hardware address type 776
Nov 27 18:46:34 localhost dhclient: eth0: unknown hardware address type 24
Nov 27 18:46:35 localhost dhclient: sit0: unknown hardware address type 776
Nov 27 18:46:35 localhost dhclient: eth0: unknown hardware address type 24
Nov 27 18:46:35 localhost dhclient: Listening on LPF/eth2/00:0e:35:5c:f4:bf
Nov 27 18:46:35 localhost dhclient: Sending on   LPF/eth2/00:0e:35:5c:f4:bf
Nov 27 18:46:35 localhost dhclient: Sending on   Socket/fallback/fallback-net
Nov 27 18:46:35 localhost dhclient: DHCPDISCOVER on eth2 to 255.255.255.255 port 67 interval 4
Nov 27 18:46:39 localhost dhclient: DHCPDISCOVER on eth2 to 255.255.255.255 port 67 interval 5
Nov 27 18:46:40 localhost dhclient: DHCPOFFER from 192.168.3.1
Nov 27 18:46:40 localhost dhclient: DHCPREQUEST on eth2 to 255.255.255.255 port 67
Nov 27 18:46:40 localhost dhclient: DHCPACK from 192.168.3.1
Nov 27 18:46:40 localhost dhclient: bound to 192.168.3.100 -- renewal in 43200 seconds.

In den anderen Logfiles, die zur Uhrzeit passen,

Code: Alles auswählen

-rw-r----- 1 root               adm         209174 2006-11-27 18:46 daemon.log
-rw-r----- 1 root               adm         188185 2006-11-27 18:49 messages
-rw-r----- 1 root               root        190877 2006-11-27 18:50 acpid
-rw-r----- 1 root               adm          83419 2006-11-27 18:51 auth.log
-rw-r----- 1 root               adm        3809103 2006-11-27 18:51 syslog
-rw-r----- 1 root               adm        3805423 2006-11-27 18:51 kern.log
-rw-r----- 1 root               adm        3805294 2006-11-27 18:51 debug
kann ich nichts finden.

In welchem Logfile soll ich denn sonst noch schauen???
Oh, yeah!

cosmac
Beiträge: 4579
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 27.11.2006 19:52:31

/usr/include/asm-generic/errno-base.h meint dazu:

Code: Alles auswählen

#define EACCES  13  /* Permission denied */
was natuerlich wunderbar zu einem sporadischen Fehler passt :(

Vielleicht kommt man mit strace weiter, also statt:

Code: Alles auswählen

/usr/bin/sudo /sbin/ifup --force eth2
sowas

Code: Alles auswählen

/usr/bin/sudo /usr/bin/strace -o/tmp/ifup-trace /sbin/ifup --force eth2
aber ob strace mit sudo zusammenspielt?
Beware of programmers who carry screwdrivers.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 27.11.2006 20:11:34

Danke für die den guten Tip.

Nachdem ich /usr/bin/strace in die /etc/sudoers eingetragen hatte, konnte ich den Befehl auch im Skript verwenden.

Leider konnte ich (trotz mind. 10 Versuchen) den Fehler nicht wieder reproduzieren. Sobald der Fehler wieder auftritt, werde ich die Ausgabe von strace posten.

/usr/bin/strace ist doch das gleiche wie tusc unter unix.
Oh, yeah!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 08.01.2007 20:12:41

Hallo,

melde mich seit langem auch noch mal zurück (hatte mein Notebook zur Reparatur gegeben und dass ganze hatte ein wenig länger gedauert).

So, wollte so eben mein wlan zu Hause über ein kleines Skript auswählen und es passierte mal wieder nichts. Da ich dass ganze ja nun in ein Logfile geschrieben habe, ist hier der Auszug:

Code: Alles auswählen

execve("/sbin/ifup", ["/sbin/ifup", "--force", "eth2"], [/* 13 vars */]) = 0
uname({sys="Linux", node="daniel-laptop", ...}) = 0
brk(0)                                  = 0x804f000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa7f0f000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=83060, ...}) = 0
mmap2(NULL, 83060, PROT_READ, MAP_PRIVATE, 3, 0) = 0xa7efa000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/tls/libc.so.6", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240O\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1245676, ...}) = 0
mmap2(NULL, 1251484, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xa7dc8000
mmap2(0xa7ef0000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x128) = 0xa7ef0000
mmap2(0xa7ef7000, 10396, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xa7ef7000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa7dc7000
mprotect(0xa7ef0000, 20480, PROT_READ)  = 0
set_thread_area({entry_number:-1 -> 6, base_addr:0xa7dc78e0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
munmap(0xa7efa000, 83060)               = 0
fcntl64(0, F_GETFD)                     = 0
fcntl64(1, F_GETFD)                     = 0
fcntl64(2, F_GETFD)                     = 0
brk(0)                                  = 0x804f000
brk(0x8070000)                          = 0x8070000
open("/etc/network/interfaces", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=690, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa7f0e000
read(3, "# This file describes the networ"..., 4096) = 690
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xa7f0e000, 4096)                = 0
open("/etc/network/run/ifstate", O_RDWR|O_APPEND|O_CREAT, 0666) = 3
fcntl64(3, F_GETFD)                     = 0
fcntl64(3, F_SETFD, FD_CLOEXEC)         = 0
fcntl64(3, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=0, len=0}) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=6, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa7f0e000
_llseek(3, 0, [0], SEEK_SET)            = 0
read(3, "lo=lo\n", 4096)                = 6
read(3, "", 4096)                       = 0
pipe([4, 5])                            = 0
pipe([6, 7])                            = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xa7dc7928) = 17519
--- SIGCHLD (Child exited) @ 0 (0) ---
fcntl64(5, F_GETFL)                     = 0x1 (flags O_WRONLY)
fstat64(5, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa7f0d000
_llseek(5, 0, 0xaff2207c, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
fcntl64(6, F_GETFL)                     = 0 (flags O_RDONLY)
fstat64(6, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xa7f0c000
_llseek(6, 0, 0xaff2207c, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
close(4)                                = 0
close(7)                                = 0
write(5, "MeinNetzwerk eth2-MeinNetzwerk\nDan"..., 48) = -1 EPIPE (Broken pipe)
--- SIGPIPE (Broken pipe) @ 0 (0) ---
+++ killed by SIGPIPE +++
So wie ich das ganze verstehe, scheint er ein Problem mit dem netzwerk-device eth2 zu haben.
Vielleicht kann ja einer das ganze ein wenig genauer deuten?

Wenn noch Informationen benötigt werden, einfach schreiben.
Danke.

[/code]
Oh, yeah!

Antworten