GNU/Linux >> Belajar Linux >  >> Ubuntu

Perintah Spawn Tidak Ditemukan Di Ubuntu 14.04?

Saya menggunakan Ubuntu 14.04 dan saya ingin memblokir negara login SSH menggunakan GeoIP ( Dari https://www.axllent.org/docs/view/ssh-geoip/),

Silakan temukan output dari perintah:

$ spawn
spawn: command not found

Jadi saya telah menginstal harapkan paket tetapi masih tidak berfungsi:

apt-get install expect
expect is already the newest version

Saya ingin menjalankan skrip berikut:

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

Apakah Anda punya ide tentang hal yang sama?

Jawaban yang Diterima:

Dalam hal ini, tampaknya spawn mengacu pada spawn ekstensi ke hosts.allow sintaks, seperti yang dijelaskan dalam RUNNING OTHER COMMANDS bagian dari halaman manual 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.

Fakta bahwa spawn mengembalikan kesalahan saat Anda mencoba menjalankannya di luar konteks itu (yaitu sebagai perintah di shell) tidak perlu menjadi perhatian Anda – jika Anda mengalami masalah dengan pengoperasian skrip pemfilteran GeoIP yang benar, itu adalah masalah terpisah.

Untuk mendemonstrasikan keberhasilan operasi dari hosts.allow spawn ekstensi di Ubuntu 14.04 tanpa terjerat di GeoIP, Anda dapat membuat skrip minimal yang dapat dieksekusi /usr/local/bin/sshfilter.sh yang hanya mencatat alamat IP dan kemudian mengembalikan 0, mis.

#!/bin/sh

logger "$0: connection from $1"

exit 0

Kemudian dengan baris berikut ditambahkan ke file host:

Terkait:Ubuntu macet di layar masuk?

Di hosts.deny:

sshd: ALL

Di hosts.allow:

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

Kemudian jalankan

tail -f /var/log/syslog

di satu jendela terminal dan, di jendela lain, coba masuk melalui SSH:

ssh localhost

Anda akan melihat pesan di ekor syslog seperti

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

Anda dapat mengonfirmasi bahwa itu juga berfungsi dengan aclexec menggantikan spawn , seperti yang disarankan dalam artikel yang Anda tautkan. Bahkan dalam hal ini Anda harus menggunakan aclexec sejak spawn tidak menggunakan kode keluar dari proses yang muncul untuk menentukan apakah akan mengizinkan koneksi – aclexec yang mana tidak .


Ubuntu
  1. ifrename:perintah tidak ditemukan

  2. rm:perintah tidak ditemukan

  3. mv:perintah tidak ditemukan

  1. [Memperbaiki] perintah lsb_release tidak ditemukan Di Ubuntu atau Derivatif

  2. (Terpecahkan) perintah apt-add-repository tidak ditemukan – Ubuntu &Debian

  3. ln:perintah tidak ditemukan

  1. Tr:Perintah Tidak Ditemukan?

  2. id:perintah tidak ditemukan

  3. w:perintah tidak ditemukan