AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-206424

WEBjuju's questions

Martin Hope
WEBjuju
Asked: 2019-12-20 18:32:36 +0800 CST

Como faço para remapear as teclas de função no readline bash vi (modo vi shell)?

  • 0

Em relação às teclas de função de mapeamento no vi readline, li essas duas stackexchanges:

  • Remapear as chaves do bash vi?
  • Associações de teclas personalizadas para o modo shell vi, ou seja, "set -o vi"?

Eu tenho um MacBookPro com uma barra de toque. As teclas de função estão sempre ligadas, mas ao contrário das teclas físicas, as teclas de função da barra de toque virtual são temperamentais e frequentemente injetam lixo nos comandos que estou digitando (isso é particularmente um problema ao tentar digitar um sublinhado... de F9, F10e talvez alguns F11). Eu não uso essas teclas... então eu gostaria de poder desativá-las. Mas, digamos que eu poderia fazê-los simplesmente ir até o fim da linha.

Esta é uma das minhas muitas tentativas de mapear para ir até o final da linha (quando no modo de inserção):

set editing-mode vi
$if mode=vi
    set keymap vi-insert
    "<F9>": end-of-line
$endif

o resultado de digitar "asdf" em um prompt é o seguinte:

TT->~$ [] (arg: 20)

Eu coloquei "[]", acima, onde o cursor permanece após pressionar <F9>, caso isso ajude.

As variações que tentei são as seguintes:

  • "<F9>": end-of-line
  • <F9>": end-of-line
  • 20: end-of-line
  • "20": end-of-line
  • "arg: 20": end-of-line
  • (arg: 20): end-of-line
  • "(arg: 20)": end-of-line

Atualização : o seguinte .inputrcagora está trabalhando para "ignorar":

set keymap vi-insert
"\e[20~":redraw-current-line
bash command-line
  • 1 respostas
  • 621 Views
Martin Hope
WEBjuju
Asked: 2018-06-07 11:51:33 +0800 CST

O comando `history` produz entradas de asterisco *

  • 2

Minhas linhas de histórico de pesquisa modificadas têm um asterisco ao lado delas.

Pesquisei unix.stackexchange.com e stackoverflow.com, mas anseio por uma explicação completa para os asteriscos no meu histórico (além do que a página man diz).

As linhas listadas com um * foram modificadas.

Exemplo:

$ history | tail
11850*
11851  ./block_ip.sh '23.228.114.203' 'evil probe'
11852  ./block_ip.sh DROP '23.228.114.203' 'evil probe
$

Neste exemplo, um script de shell tinha um terceiro argumento, mas não houve erro, e eu o executei duas vezes sem especificar (DROP/ACCEPT).

A modificação foi uma tentativa de apagar esse histórico para que a expansão do histórico não me levasse ao comando errado (de novo).

Eu quero saber mais sobre isso ( mas eu não sei o que eu não sei ).

Por favor, considere os dois ângulos disso:

  • como posso usar isso ( por exemplo, posso obter esse comando original se precisar )?
  • como um bandido pode usar isso ( alguém pode ocultar seu histórico de comandos dessa maneira )?

Se uma resposta genérica for muito detalhada, observe algumas das minhas configurações:

EDITOR=/usr/bin/vim
HISTFILE=/home/jim/.bash_history
SHELLOPTS=braceexpand:hashall:histexpand:history:interactive-comments:monitor:vi

E esta informação do sistema operacional ( é RedHat ... mas Debian/Fedora/Ubuntu não deve variar muito ... deveria? ):

Linux qwerutyhgfjkd 3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Estou usando o bash como meu shell.

bash command-history
  • 1 respostas
  • 1203 Views
Martin Hope
WEBjuju
Asked: 2018-02-25 20:47:40 +0800 CST

bloqueando 117.0.0.0/8 mostra como tendo bloqueado localhost

  • 2

Estou tentando bloquear algum tráfego de ip estrangeiro para nosso servidor web. Arin.net mostra que o bloco 117.0.0.0/8 pertence a South Brisbane Australia. Mas quando eu o bloqueio, ele aparece como "localhost/8".

$ sudo iptables -I INPUT -s 117.0.0.0/8 -j DROP -m comment --comment "south brisbane au"

o resultado da listagem de iptables -L --line-numbersé:

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    DROP       all  --  localhost/8          anywhere             /* south brisbane au */

O que está acontecendo aqui? Por que 117.0.0.0/8 está aparecendo como "localhost/8"? Esse bloqueio afetará o tráfego para localhost?

ATUALIZAÇÃO (e saída da solução aceita)

Eu implementei usando -nconforme sugerido por vários, incluindo a resposta aceita. Aqui está a saída após o uso -n:

$ sudo iptables -L -n --line-numbers | head
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    DROP       all  --  117.0.0.0/8          0.0.0.0/0            /* south brisbane au */

Um benefício adicional é que iptables -Lficou tremendamente lento. Não tive tempo de investigar; mas evitar as pesquisas de DNS também resolveu esse problema. Obviamente, as pesquisas de DNS na fonte estavam ficando iptables -Lmuito lentas com mais de um punhado na cadeia. Agora ele emite o 144 completo nessa cadeia imediatamente. Parece estranho que a pesquisa reversa para a fonte seja o padrão.

iptables
  • 1 respostas
  • 88 Views
Martin Hope
WEBjuju
Asked: 2018-02-09 07:47:42 +0800 CST

Operador binário esperado - pergunta de citação para argumentos de script de shell

  • 2

Eu tenho uma pergunta sobre como estou adicionando argumentos ao executar um script de shell.

Eu tenho um script simples que me ajuda a bloquear intervalos de IP:

~/block_ip.sh:

if [ ! $3 ]
then
 echo "usage ~/block_ip.sh (DROP/ACCEPT) '0.0.0.0' 'amsterdam'"
 exit 1
fi

echo "adding $3"
sudo iptables -I INPUT -s $2 -j $1 -m comment --comment "$3"

Se eu executar isso sem argumentos, a saída será a esperada:

~$ ./block_ip.sh
usage ~/block_ip.sh (DROP/ACCEPT) '0.0.0.0' 'amsterdam'

No entanto, os espaços parecem ser a causa da saída inesperada de "operador binário esperado" :

~$ ./block_ip.sh DROP '1.0.0.0/8' 'south brisbane qld'
./block_ip.sh: line 1: [: brisbane: binary operator expected
adding south brisbane au

Mas, em seguida, adiciona, apesar da saída inesperada:

Chain INPUT (policy ACCEPT)
num  target     prot opt source           destination
1    DROP       all  --  1.0.0.0/8        anywhere         /* south brisbane au */

Se for um problema de citação, como formo os argumentos (sem usar barras invertidas para escapar dos espaços)? Claro, espero precisar de uma mudança no script, que também é uma solução aceitável.

bash shell-script
  • 1 respostas
  • 10585 Views
Martin Hope
WEBjuju
Asked: 2018-01-17 07:30:26 +0800 CST

Proteja-se contra solicitações incorretas de virtualhost em centos/apache

  • 0

Executamos uma pilha LAMP do CentOS Linux versão 7.4 com Apache 2.4. Em um painel de monitoramento, acompanho várias métricas de desempenho, e uma delas é "solicitações de host inválidas", em que o host virtual não corresponde ao do nosso servidor.

Manualmente, eu uso o arin.net para procurar solicitações de host inválidas. Como a natureza do nosso negócio é nos EUA, apenas no mercado interno, bloqueamos intervalos de IP estrangeiros que nos visitam sem o nome de host virtual adequado. Fazemos isso usando iptables; o seguinte é uma amostra disso, fwiw.

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  187.0.0.0/8          anywhere             /* montevideo uruguay */
DROP       all  --  177.0.0.0/8          anywhere             /* vmontevideo uraguay */
DROP       all  --  164.77.0.0/16        anywhere             /* montevideo uraguay */
DROP       all  --  78-0-0-0.adsl.net.t-com.hr/8  anywhere             /* amsterdam */

Isso é eficaz para desacelerar todo aquele tráfego "farejador" do exterior. .


Quase de repente, nas últimas 2 semanas, começamos a receber de 3 a 6 solicitações por dia de Chicago IL, Amazon AWS (Seattle WA), Fremont CA e etc.


Aqui estão algumas entradas de log do access_log do apache:

./myurl.com-access.log:23.20.12.111 - - [16/Jan/2018:00:16:21 -0600] "HEAD / HTTP/1.1" 200 - "-" "Cloud mapping experiment. Contact [email protected]"
./myurl.com-access.log:23.20.54.152 - - [16/Jan/2018:08:10:03 -0600] "HEAD / HTTP/1.1" 200 - "-" "Cloud mapping experiment. Contact [email protected]"
./myurl.com-access.log-20180114:23.20.12.111 - - [13/Jan/2018:08:07:44 -0600] "HEAD / HTTP/1.1" 200 - "-" "Cloud mapping experiment. Contact [email protected]"
./myurl.com-ssl-access.log:74.82.47.3 - - [14/Jan/2018:07:20:31 -0600] "GET / HTTP/1.1" 200 21 "-" "-"
./myurl.com-ssl-access.log:108.178.61.58 - - [15/Jan/2018:06:40:17 -0600] "GET / HTTP/1.1" 200 20 "-" "Mozilla/5.0 zgrab/0.x"
./myurl.com-ssl-access.log:184.154.189.90 - - [15/Jan/2018:07:54:29 -0600] "GET / HTTP/1.1" 200 21 "-" "Mozilla/5.0 zgrab/0.x"
./myurl.com-ssl-access.log:108.178.61.58 - - [16/Jan/2018:06:16:45 -0600] "GET / HTTP/1.1" 200 21 "-" "Mozilla/5.0 zgrab/0.x"
./myurl.com-ssl-access.log:184.154.189.90 - - [16/Jan/2018:06:51:18 -0600] "GET / HTTP/1.1" 200 21 "-" "Mozilla/5.0 zgrab/0.x"
./myurl.com-ssl-access.log:74.82.47.3 - - [16/Jan/2018:07:28:43 -0600] "GET / HTTP/1.1" 200 20 "-" "-"
./myurl.com-ssl-access.log-20180114:74.82.47.3 - - [08/Jan/2018:06:25:14 -0600] "GET / HTTP/1.1" 302 - "-" "-"

Quais métodos estão disponíveis para proteger contra (bloquear totalmente o mais cedo possível) solicitações para o servidor que não possuem o host virtual único e adequado ?


Em resposta a uma solução que fail2banpode ajudar, verifiquei e o fail2ban está em execução:

$ ps aux | grep fail2ban
root      2824  0.0  0.0 368832 53632 ?        Sl    2017  17:44 /usr/bin/python2 -s /usr/bin/fail2ban-server -s /var/run/fail2ban/fail2ban.sock -p /var/run/fail2ban/fail2ban.pid -x -b

Vou procurar escrever uma regra para isso - não posso bloquear o tráfego que é legítimo - é seguro assumir que nenhum tráfego válido solicitará o host sem o virtualhost (certamente o aplicativo da web é escrito de uma forma que exige isso ser verdade).


atualizar

fail2ban não funcionará, pois eles atingem o servidor apenas uma vez com cada endereço IP - eles não os reutilizam. deixe-me afirmar que identifiquei efetivamente o tráfego na linha 2 do aplicativo da web. agora, estou enviando a eles um status 200 com um número aleatório, muito pequeno, muito rápido. mas preciso de uma maneira de "encobrir" o servidor, de alguma forma simplesmente não responder de uma forma que não coloque nenhuma carga real no servidor.

security iptables
  • 3 respostas
  • 770 Views
Martin Hope
WEBjuju
Asked: 2017-12-27 08:22:11 +0800 CST

Saídas do Bash `sleep` __bp_preexec_invoke_exec

  • 2

Fundo

Estou executando um comando maior de uma linha. Ele está gerando inesperadamente (duas vezes por iteração) o seguinte:

__bp_preexec_invoke_exec "$_"

Aqui está o comando reduzido (removida outra atividade em loop):

for i in `seq 1 3`; do sleep .1 ; done

nota: depois de brincar com isso algumas vezes, ele inexplicavelmente para de imprimir a saída inesperada

O que eu tentei

  • Se eu remover sleep .5, não obtenho a saída inesperada
  • Se eu simplesmente executar sleep .5o prompt retorna, mas não há saída
  • Pesquisei no Google por __bp_preexec_invoke_exec, mas não consigo determinar como isso se aplica ao que estou fazendo

Pergunta

O que é __bp_preexec_invoke_exec "$_"?

Como posso executar isso sem a saída indesejada?


Mais informações sobre a solução graças a @gina2x:

Aqui está a saída dedeclare -f | grep preexec

    preexec_functions+=(preexec);
    __bp_preexec_interactive_mode="on"
__bp_preexec_invoke_exec ()
    if [[ -z "$__bp_preexec_interactive_mode" ]]; then
            __bp_preexec_interactive_mode="";
        __bp_preexec_interactive_mode="";
    local preexec_function;
    local preexec_ret_value=0;
    for preexec_function in "${preexec_functions[@]}";
        if type -t "$preexec_function" > /dev/null; then
            $preexec_function "$this_command";
            preexec_ret_value="$?";
    __bp_set_ret_value "$preexec_ret_value" "$__bp_last_argument_prev_command"
    if [[ -z "${iterm2_ran_preexec:-}" ]]; then
        __iterm2_preexec "";
    iterm2_ran_preexec="";
__iterm2_preexec ()
    iterm2_ran_preexec="yes";

Vejo muitas informações "iterm2" (estou em um Mac e usando o iTerm2.app).

Na verdade, quando tento reproduzir usando Terminal.app, não consigo reproduzir a saída inesperada .

Excelente investigação com declare -f- obrigado!

bash command-line
  • 1 respostas
  • 595 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve