GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Spawn-Befehl auf Ubuntu 14.04 nicht gefunden?

Ich verwende Ubuntu 14.04 und möchte die SSH-Anmeldung landesweit mit GeoIP blockieren (von https://www.axllent.org/docs/view/ssh-geoip/),

Bitte finden Sie die Ausgabe des Befehls:

$ spawn
spawn: command not found

Damit habe ich expect installiert Paket, funktioniert aber immer noch nicht:

apt-get install expect
expect is already the newest version

Ich möchte folgendes Skript ausführen:

cat /etc/hosts.allow
sshd: ALL: spawn /usr/local/bin/sshfilter.sh %a

Haben Sie eine Ahnung davon?

Akzeptierte Antwort:

In diesem Fall scheint spawn bezieht sich auf den spawn Erweiterung zu hosts.allow Syntax, wie in RUNNING OTHER COMMANDS beschrieben Abschnitt der Manpage hosts_options (5) (man hosts_options ):

RUNNING OTHER COMMANDS
    aclexec shell_command
           Execute,  in a child process, the specified shell command, after
           performing   the   %<letter>   expansions   described   in   the
           hosts_access(5)  manual  page.   The  command  is  executed with
           stdin, stdout and stderr connected to the null device,  so  that
           it won't mess up the conversation with the client host. Example:

              smtp : ALL : aclexec checkdnsbl %a

           executes,  in  a  background  child  process,  the shell command
           "checkdnsbl %a" after replacing %a by the address of the  remote
           host.

           The  connection  will be allowed or refused depending on whether
           the command returns a true or false exit status.

    spawn shell_command
           Execute, in a child process, the specified shell command,  after
           performing   the   %<letter>   expansions   described   in   the
           hosts_access(5) manual  page.   The  command  is  executed  with
           stdin,  stdout  and stderr connected to the null device, so that
           it won't mess up the conversation with the client host. Example:

              spawn (/usr/sbin/safe_finger -l @%h | /usr/bin/mail root) &

           executes, in a  background  child  process,  the  shell  command
           "safe_finger  -l @%h | mail root" after replacing %h by the name
           or address of the remote host.

Die Tatsache, dass spawn einen Fehler zurückgibt, wenn Sie versuchen, es außerhalb dieses Kontexts auszuführen (d. h. als Befehl in der Shell), muss Sie nicht beunruhigen – wenn Sie Probleme mit dem ordnungsgemäßen Betrieb des GeoIP-Filterskripts haben, ist das ein separates Problem.

Um den erfolgreichen Betrieb von hosts.allow spawn zu demonstrieren Erweiterung auf Ubuntu 14.04, ohne sich in GeoIP zu verheddern, können Sie ein minimal ausführbares /usr/local/bin/sshfilter.sh-Skript erstellen, das einfach die IP-Adresse protokolliert und dann 0 zurückgibt, z. B.

#!/bin/sh

logger "$0: connection from $1"

exit 0

Dann mit den folgenden Zeilen zu den Hosts-Dateien hinzugefügt:

Verwandte:Ubuntu bleibt auf dem Anmeldebildschirm hängen?

In hosts.deny:

sshd: ALL

In hosts.allow:

sshd: ALL: spawn /usr/local/bin/sshfilter.sh %a

Dann ausführen

tail -f /var/log/syslog

in einem Terminalfenster und versuchen Sie in einem anderen, sich über SSH anzumelden:

ssh localhost

Sie sollten eine Nachricht im Syslog-Tail wie

sehen
Jul 25 08:03:59 T61p logger: /usr/local/bin/sshfilter.sh: connection from 127.0.0.1

Sie können bestätigen, dass es auch mit aclexec funktioniert anstelle von spawn , wie in dem von Ihnen verlinkten Artikel vorgeschlagen. Tatsächlich sollten Sie in diesem Fall aclexec verwenden seit spawn verwendet nicht den Exit-Code des erzeugten Prozesses, um zu bestimmen, ob die Verbindung zugelassen werden soll – welcher aclexec tut .


Ubuntu
  1. id:Befehl nicht gefunden

  2. w:Befehl nicht gefunden

  3. df:Befehl nicht gefunden

  4. du:Befehl nicht gefunden

  5. rm:Befehl nicht gefunden

Der Ping-Befehl wurde unter Ubuntu 20.04 Focal Fossa Linux nicht gefunden

Der Ping-Befehl wurde unter Ubuntu 22.04 Jammy Jellyfish Linux nicht gefunden

So beheben Sie do-release-upgrade:Befehl nicht gefunden Fehler in Ubuntu

Bash ifconfig:Befehl nicht in Ubuntu &Debian gefunden

So beheben Sie, dass der Befehl „Ifconfig“ unter Ubuntu 20.04 LTS nicht gefunden wurde

Ping-Befehl nicht gefunden? Installieren Sie Ping auf Ubuntu