Hallo,
ich suche eine Möglichkeit per Tastenkombination die Internetverbindung zu trennen und neu aufzubauen (per Script). Am Rechner soll übrigens kein Nutzer angemeldet sein. Wie kann ich das am besten machen? Über die inittab hab ich auf CTRL + ALT + DEL das Kommando halt gelegt, geht sowas auch für andere Kombinationen?
System ist übrigens ein Debian Sarge.
Gruß
TimmintoR 2°°4
Linux 14.985 Themen, 106.409 Beiträge
Ich kenne keine Konfigurationsdatei die dafür geeignet ist.
Du kannst mit trap in einem Shellscript auf bestimmte Signale reagieren. trap legt die Reaktion der Shell für asyncron eintreffende Signale fest. Wenn du Ctrl + C drückst, dann löst du das Signal SIGINT aus, welches normalerweise ein Programm oder ein Shellscript unterbricht.
Du kannst die Shell aber auch dazu bringen, anders auf das Signal SIGINT zu reagieren.
Du mußt mal die Manpage durchlesen ,"man 7 signal"
trap -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
Am Ende des Scripts würde ich , das normale Verhalten des Signals wieder herstellen.
Irgendwo im Advanced Bash Scriting Guide :
"Trapping signals
trap
Specifies an action on receipt of a signal; also useful for debugging.
Note A signal is simply a message sent to a process, either by the kernel or another process, telling it to take some specified action (usually to terminate). For example, hitting a Control-C, sends a user interrupt, an INT signal, to a running program.
trap '' 2
# Ignore interrupt 2 (Control-C), with no action specified.
trap 'echo "Control-C disabled."' 2
# Message when Control-C pressed."
Das Signal von Strg + C abzufangen, ist wahrscheinlich der beste Ansatz.
Wenn du das Shellscript selbst aufrufen willst, dann mußt du ein Programm in C programmieren.
Dazu wird der POSIX Systemcall fork() aufgerufen, um einen Kindprozess zu starten und dann wird mit einem execl() Systemcall dieser Kindprozess durch den eigentlichen Prozess, der ausgeführt werden soll, ersetzt (gestartet). So macht es jedenfalls die Bash, wenn du ein Programm startest.
PS Am Einfachsten ist es, wenn du mit den Cursortasten "hoch" und "runter" die zuletzt ausgeführten Befehle zurückholst und eventuell editierst. Dazu kann man die Cursortasten "links" und "rechts" benutzen, um den Cursor zu positionieren.
Die BASH ist im Gegensatz zur alten BOURNE Shell besser zu bedienen.
Außerdem kann man die TAB Taste nutzen, um Befehle , Verzeichnissnamen und Dateinamen automatisch zu erweitern.
