So melden Sie sich beim Start eines TTY an

So melden Sie sich beim Start eines TTY an

Ich möchte beim Start von Linux einen Befehl auf einem speziellen TTY (z. B. TTY2) ausführen, sodass dieser Befehl bei jedem Neustart des Systems auf diesem TTY ausgeführt wird. Ich habeDasKlicken Sie dazu auf den Link.

Es funktioniert einwandfrei, aber das Problem ist, dass ich mich beim Start beim gewünschten TTY anmelden muss, um dann die Befehle auszuführen. Gibt es eine Möglichkeit, mich am Anfang mit einem Befehl bei einem TTY anzumelden? Danke

Antwort1

Eine einfachere Lösung zum Ausführen eines Programms wäre meiner Meinung nach die Kombination des --autologinFlags von gettyund einer Funktion, die die gewünschten Befehle ausführt .bashrc.

Teil 1: Automatische Anmeldung bei Getty

Wie Sie vielleicht wissen oder auch nicht, werden TTYs mit einemGetty-Programmals Startdienst im /etc/init/Verzeichnis. Für Ubuntu ist das Standardprogramm agetty, das das Flag hat --autologin. Daher können wir Folgendes tun:

Führen Sie im Terminal den Befehl aus sudo nano /etc/init/tty1.conf, um die Init-Datei für TTY1 zu öffnen (beachten Sie, dass TTY1 nur ein Beispiel ist, Sie können es beliebig wählen). Ändern Sie die Zeile

exec /sbin/getty -8 38400 tty1

Zu

exec /sbin/getty --autologin userName    -8 38400 tty1

Ersetzen Sie es userNamedurch Ihren tatsächlichen Benutzernamen.

Teil 2: Ausführen einer Funktion beim Shell-Login

Linux/Unix-Systeme haben dieses nette kleine Programm namens, ttydas meldet, welche Art von Terminal Sie gerade verwenden. In gnome-terminal würde es beispielsweise etwas wie

$ tty
/dev/pts/27

Bei TTY1 würde es jedoch eine Meldung geben

$ tty
/dev/tty1

Wenn wir wissen, dass wir oben in unserer $HOME/.bashrcDatei eine Funktion erstellen können

function testTTY
{
  isTTY=$(tty | awk '{if ($0~/\/dev\/tty.*/) {print "true"}else{print "false"}}')

  if [ $isTTY == "true" ]; then
    printf "You are in virtual console\n"
    printf "current disk usage is"
    df
  fi
}

.bashrcRufen Sie dann unten Ihre Funktion auf, ganz einfach als testTTY. Definieren Sie also zuerst die Funktion und rufen Sie sie später auf.

Randnotizen:

  • Platzieren Sie benutzerdefinierte Befehle zwischen denif [];then ...fi
  • Wenn Sie einen bestimmten TTY-Code benötigen, ändern Sie isTTYihn folgendermaßen:isTTY=$(tty | awk '{if ($0=="/dev/tty1") {print "true"}else{print "false"}}')

Antwort2

Befolgen Sie die folgenden Schritte.

Installieren Sie zuerst mingetty: $ sudo apt-get install mingetty

5.2) Bearbeiten Sie /etc/init/tty1.conf

/* Um Root als Standard-Login festzulegen */

Änderung: exec /sbin/getty -8 38400 tty1

An: exec /sbin/mingetty --autologin root --noclear tty1

/* Um einen normalen Benutzer als Standard-Login festzulegen */

exec /bin/login -f abcuser < /dev/tty1 > /dev/tty1 2>&1

verwandte Informationen