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-302078

KuboMD's questions

Martin Hope
KuboMD
Asked: 2019-07-26 05:54:19 +0800 CST

Associação Array não está sendo redeclarado?

  • 1

Eu tenho um programa que funciona como um menu. Ele tem uma matriz associativa chamada configcomo:

declare -A config=( [h]="?" [c]="?" [x]="?" [l]="?" [t]="?" [n]="?" )

No loop principal há uma verificação para ver se todos os valores foram configurados, como:

if [ "${config[h]}" == "Y" ] && [ "${config[c]}" == "Y" ] && [ "${config[l]}" == "Y" ] && [ "${config[x]}" == "Y" ] && [ "${config[t]}" == "Y" ] && [ "${config[n]}" == "Y" ];

Agora, quando termino uma execução, desmarco e redeclaro a matriz.

unset config; declare -A config=( [h]="?" [c]="?" [x]="?" [l]="?" [t]="?" [n]="?" )

No entanto, a matriz não parece ser declarada novamente corretamente. Isso porque quando configuro apenas um dos valores, [C]=Ypor exemplo, a ifinstrução passa. Eu tenho certeza que sim porque o corpo da ifinstrução muda parte da cor do texto. Eu acredito que é porque o resto dos índices não são realmente set="?", então a ifdeclaração é reduzida para apenas [ "${config[c]}" == "Y"]which is be true. Eu sei disso desde quando eu ecoo $config[@]dentro do corpo da ifdeclaração, com certeza eu só vejo um "Y" em vez de cinco. Como faço para que o array redeclare corretamente?

EDIT
Obrigado pela atenção;

  1. Os valores são definidos como Y após alguma entrada do usuário. Esta parte eu estou muito confiante e, portanto, omitida da minha pergunta. Todos seguem este formato:

     read ch
            if [ $ch == "Hosts" ]; then
                    while true; do
                            nano listHosts
                            echo -en "Commit this list of Hostnames? [Y|N to re-edit]: "
                            read yn
                            if [ $yn == "Y" ] || [ $yn == "y" ] || [ $yn == "yes" ]; then
                                    break
                            elif [ $yn == "N" ] || [ $yn == "n" ] || [ $yn == "no" ]; then  
                                    continue
                            fi      
                    done
                    config[h]="Y"
    
  2. Em relação ao comentário de Kusalanda, verifiquei se há letras incorretas, mas é consistentemente 'c' minúsculo. Bem, sim, eu quis dizer ${config[@]}.

  3. Declare -p lança alguma luz: declare -a config='([0]="Y")'

Como é que -p diz que usei a minúscula? As chamadas estão nesta ordem:

 unset config
 declare -A config=( [h]="?" [c]="?" [x]="?" [l]="?" [t]="?" [n]="?" )   

Então eu defino $ch="Commands" via read;

 elif [ $ch == "Commands" ]; then  
                while true; do
                        nano iSet
                        echo -en "Commit this list of commands? [Y|N to re-edit]: "             
                        read yn                        
                        if [ $yn == "Y" ] || [ $yn == "y" ] || [ $yn == "yes" ]; then           
                                break
                        elif [ $yn == "N" ] || [ $yn == "n" ] || [ $yn == "no" ]; then                  
                                continue        
                        fi      
                done        
                config[c]="Y"
                declare -p config

Tentei recriar em um script menor conforme a sugestão do Bodo:

dec() {
        declare -A config=( [h]="?", [c]="?" )
}
test() {
        declare -p config
        if [ "${config[h]}" == "Y" ] && [ "${config[c]}" == "Y" ]; then 
                echo "Yup"
        fi
}

dec
config[h]="Y"; config[c]="Y"

unset config
dec
config[h]="Y" 

test

E assim como no meu outro script, a ifresolução é verdadeira: declare -a config='([0]="Y")' Yup

bash array
  • 1 respostas
  • 137 Views
Martin Hope
KuboMD
Asked: 2019-06-27 10:04:47 +0800 CST

Calculando a perda de pacotes do ping?

  • 0

Eu tenho uma VM ESXi que executa comandos em alguns dispositivos de 700 ~ em nossa rede. Está usando Expect, e devido à idade deste equipamento eles têm períodos de baixo desempenho. Esses dois não se misturam bem - pois o script Expect terá que esperar muito tempo para obter a saída antes de prosseguir.

Para tentar evitar isso, nossa equipe decidiu que um pingteste deveria ser feito antes de conectar ao dispositivo. Se houver perda de pacotes, voltaremos a isso mais tarde.

O problema que estamos tendo é que nosso teste de ping se parece com isso:

loss=`ping -i 0.2 -w 2 $1 | grep "packet loss" | awk '{print $6}'`
loss=${loss%?}

echo "$loss"

10 pings em dois segundos - mas recebemos muitas respostas de perda de pacotes de 9% . Por exemplo, geralmente temos testes 74/700 saindo preventivamente devido à detecção de perda de pacotes. 39/74 desses relatam 9% , enquanto o restante relata em múltiplos de 10.

Até onde podemos dizer, isso não faz sentido; há 10 pacotes sendo enviados... se um for descartado, deve haver uma perda de 10%. Isso tem sido observado com pouca frequência, mas acontece. É possível que haja algo acontecendo na memória que esteja fazendo com que o número 9 se manifeste? Se estes são casos legítimos de perda de pacotes, então é uma grande notícia para nós.

networking ping
  • 1 respostas
  • 3374 Views
Martin Hope
KuboMD
Asked: 2019-06-01 03:35:49 +0800 CST

ls locais/remotos

  • 2

Quero pegar linhas relevantes de um registrador SNMP em tempo real e movê-las para o meu servidor de aplicativos para verificação. A segunda metade está bem, scpestá fazendo o truque. A primeira metade está me causando alguma dor.

O que eu quero fazer é verificar os três arquivos de log mais recentes para as mensagens relevantes. Então eu faria: [user@SNMPServer]$ cd /var/opt/OV/log/nnm/; files=`ls -t | grep -m 3 trap.csv`; echo $files

trap.csv trap.csv.2019-05-31_07_00_01 trap.csv.2019-05-31_06_00_01

O que é ótimo, porque eu planejo:

[user@SNMPServer]$ grep $ipAddress $files

O que, novamente, funciona bem quando o executo no servidor SNMP.

Quando eu faço isso da minha VM No entanto,
admin@alarmux:~$sudo ssh [email protected] "cd /var/opt/OV/log/nnm/; files=`ls -t | grep -m 3 trap.csv`; echo $files"

Eu recebo esta saída:
assets bash: testerlog: command not found bash: count.txt: command not found

Estes são os ls -tresultados do diretório inicial da minha VM, não do remoto. Estou faltando caracteres de escape em algum lugar?

shell ssh
  • 2 respostas
  • 546 Views
Martin Hope
KuboMD
Asked: 2019-04-30 09:30:10 +0800 CST

O que acontece se eu iniciar muitos trabalhos em segundo plano?

  • 13

Eu preciso fazer algum trabalho em 700 dispositivos de rede usando um script de espera. Eu posso fazê-lo sequencialmente, mas até agora o tempo de execução é de cerca de 24 horas. Isso se deve principalmente ao tempo que leva para estabelecer uma conexão e ao atraso na saída desses dispositivos (antigos). Eu sou capaz de estabelecer duas conexões e executá-las em paralelo muito bem, mas até onde posso empurrar isso?

Eu não imagino que eu poderia fazer todos os 700 de uma vez, certamente há algum limite para o não. de conexões telnet que minha VM pode gerenciar.

Se eu tentasse iniciar 700 deles em algum tipo de loop como este:

for node in `ls ~/sagLogs/`; do  
    foo &  
done

Com

  • CPU 12 CPUs x Intel(R) Xeon(R) CPU E5649 @ 2.53GHz

  • Memória 47,94 GB

Minha pergunta é:

  1. Todas as 700 instâncias poderiam ser executadas simultaneamente?
  2. Até onde eu poderia chegar até meu servidor atingir seu limite?
  3. Quando esse limite for atingido, ele apenas esperará para iniciar a próxima iteração fooou a caixa travará?

Infelizmente, estou executando em um ambiente de produção corporativo, então não posso simplesmente tentar e ver o que acontece.

bash background-process
  • 4 respostas
  • 7641 Views
Martin Hope
KuboMD
Asked: 2019-04-30 05:45:45 +0800 CST

Saída diferente quando alias

  • 5

Eu tenho um comando definido como um alias assim:

alias badalarm="cat ~/sagLogs/* | grep -I 'failed to generate expected' | awk '{print $4}' | sort | uniq | tee /dev/tty | wc -l" 

Ele me dá essa saída:

$ badalarm
alg-t1sg0103
alg-t1sg0104
all-t1sg0006
all-t1sg0009
input)
5

No entanto, se eu executar os comandos da CLI diretamente, recebo:

$ cat ~/sagLogs/* | grep -I 'failed to generate expected' | awk '{print $4}' | sort | uniq | tee /dev/tty | wc -l
alg-t1sg0103
alg-t1sg0104
all-t1sg0006
all-t1sg0009
4

Como é que a versão do alias está pegando algum outro arquivo? Quando eu uso
cat ~/sagLogs/* | grep 'failed to generate expected'

Eu recebo esta saída:

[...]
Apr:09:09:31:01:         >>>1 on all-t1sg0009 failed to generate expected 134
Apr:09:09:31:01:         >>>2 on all-t1sg0009 failed to generate expected 107
Apr:09:09:31:01:         >>>2 on all-t1sg0009 failed to generate expected 108
Apr:10:08:00:35:         >>>1 on all-t1sg0009 failed to generate expected 133
Apr:10:08:00:35:         >>>1 on all-t1sg0009 failed to generate expected 107
Binary file (standard input) matches

Como posso omitir o arquivo de 'entrada padrão' do meu alias?

bash grep
  • 1 respostas
  • 305 Views
Martin Hope
KuboMD
Asked: 2018-12-08 10:51:27 +0800 CST

snmptrap - configuração subjacente?

  • 0

Estou tentando fazer com que meu servidor Ubuntu LTS 16.04 envie SNMPTraps para meu servidor HP OVO. A razão para isso é que existem dispositivos legados na rede que não podem enviar um aviso SNMP em caso de falha, mas ainda podem ser acessados ​​por meio de uma placa conectada à rede. Devido a isso, meu servidor Ubuntu se conecta a essa placa para avaliar os nós com falha. Eu já consegui isso usando Bash e Expect - então agora o que eu quero fazer é enviar um snmptrapcomo parte do meu script. Minha pergunta é:

Pergunta

O snmptrapcomando requer configuração subjacente? Ou funciona a partir da linha de comando da maneira que nós (ou talvez apenas eu) tomamos o telnetcomando como garantido?

Pergunto porque estou tentando fazer isso em uma rede corporativa, e atualmente meu OVO Server não recebe a armadilha. Portanto, quero restringir se é um dos vários firewalls ou se o problema é, como mencionado, um problema de configuração subjacente.

Contexto:

Meu script de espera basicamente retorna o status de cada placa gerenciada pela placa conectada à rede de volta ao bash como uma matriz - 0 para OK 1 para não respondeu . Então Bash faz:

errors=$((expect ~/assets/connect))
for i in ${!errors[@]}:
do
    if [[ ${errors[$i]} -eq 1 ]]:
        then:
        snmptrap #stuff goes here; the relevant source IP is saved elsewhere & available - I want the SNMP trap to send a "node $i" down. 
    fi
done
networking snmp
  • 1 respostas
  • 586 Views
Martin Hope
KuboMD
Asked: 2018-11-21 07:11:18 +0800 CST

Logrotate não ocorre automaticamente

  • 0

Consigo ligar logrotate /etc/logrotate.confsempre que vejo meu arquivo de log exceder o limite especificado e ele gira bem. Eu tinha a impressão de que sempre que um arquivo especificado na configuração logrotate violasse seu limite, ele os rotaria automaticamente sem que eu precisasse executar o comando.

/var/log/upstart/*server.log {
        size 2500M
        missingok
        rotate 5
        compress
        compress
        notifempty
        nocreate
}

Alguma ideia?

logs logrotate
  • 1 respostas
  • 340 Views
Martin Hope
KuboMD
Asked: 2018-11-16 05:19:42 +0800 CST

Permissão de arquivo - Permitir apenas a leitura do script?

  • 0

Eu tenho uma senha armazenada em texto simples. Eu só quero que meu script esperado "LoadList" seja capaz de ler a senha para gerar uma sessão SFTP. Não há nenhum cenário em que eu queira poder ler a senha. Isso pode ser feito de alguma forma atribuindo o script a um usuário e apenas dando a esse usuário acesso de leitura?

files expect
  • 1 respostas
  • 63 Views
Martin Hope
KuboMD
Asked: 2018-11-15 10:56:36 +0800 CST

Como posso evitar este erro "não foi possível executar "des": nenhum arquivo ou diretório"?

  • -1

Estou tentando fazer criptografia no Expect conforme descrito neste wiki no Ubuntu 16.04. instalei o tcllib

root@alarmux:/home/abdmin# apt-get install tcllib
Reading package lists... Done
Building dependency tree       
Reading state information... Done
tcllib is already the newest version (1.17-dfsg-1).
0 upgraded, 0 newly installed, 0 to remove and 77 not upgraded.

No entanto, quando executo meu script, recebo:

couldn't execute "des": no such file or directory
    while executing
"exec echo "$pd" | des -e -k $key -b > /home/abdmin/$filename"
    (procedure "utility_encrypt" line 3)
    invoked from within
"utility_encrypt pswd encrypted_Pass"
    (file "./tclTest" line 22)

Por que o descomando não pode ser executado?

expect tcl
  • 3 respostas
  • 1196 Views
Martin Hope
KuboMD
Asked: 2018-11-14 06:30:29 +0800 CST

Instalando tarball sem Make?

  • 0

Não tenho acesso à Internet na minha nova VM Xenial, mas tenho SFTP para um servidor que tem. O problema é que preciso instalar alguns pacotes. Obtê-los é bom, basta baixá-los para o meu servidor conectado à Internet e transferir para a VM. Meu problema Eu só vi tarballs instalados com "Make". Eu tenho o pacote Make como um tarball, mas sem o "Make" não sei como instalá-lo.

Edit: Especificamente, o Tarball émake-dfsg_4.1.orig.tar.gz

Tl;dr - Como posso instalar um tarball sem usar o Make? Eu posso fazer:
$tar -xf make-dfsg_4.1.orig.tar.gz
$cd make-dfsg_4.1
$ls
Não tenho certeza para onde ir a partir daqui.

Atualização: O README diz:

Se você precisa construir o BNU Make e não tem nenhum outro programa 'make' para usar, você pode usar o script shell 'build.sh'. Para fazer isso, primeiro execute 'configure' conforme descrito em INSTALL. Então, em vez de digitar 'make' para compilar o programa, digite 'sh build.sh' Isso deve compilar o programa no diretório atual. Então você terá um programa Make que você pode usar para './make install' ou qualquer outra coisa.

Eu não entendo o que significa

primeiro execute 'configure' conforme descrito em INSTALL. Algum insight?

ubuntu apt
  • 1 respostas
  • 664 Views
Martin Hope
KuboMD
Asked: 2018-08-22 04:50:33 +0800 CST

Upstart Logrotate?

  • 0

O que há de errado com minha configuração? Eu tive que --forçar o logrotate algumas vezes para ver as mudanças, mas a numeração é toda instável.

    ----@----------:/var/log/upstart# ls -Anh
    total 4.0G
    -rw-r----- 1 0 0  56K Aug 21 08:41 graylog-server.log
    -rw-r----- 1 0 0 1.1G Aug 21 08:36 graylog-server.log.1.1.gz
    -rw-r----- 1 0 0 727M Aug 21 08:35 graylog-server.log.1.gz.1.gz
    -rw-r----- 1 0 0    0 Aug 20 11:22 graylog-server.log.2.gz
    -rw-r----- 1 0 0  28K Aug 20 10:40 graylog-server.log.3.gz.1.gz
    -rw-r----- 1 0 0 1.2G Aug 20 10:29 graylog-server.log.4.gz.1
    -rw-r----- 1 0 0 861M Aug 21 08:40 graylog-server.log.4.gz.1.gz
    -rw-r----- 1 0 0 212M Aug 20 10:25 graylog-server.log.5.gz
    -rw-r----- 1 0 0 5.3M Aug 20 06:25 graylog-server.log.6.gz

Configuração:

----@----------:/var/log/upstart# vim /etc/logrotate.d/upstart

/var/log/upstart/*-server.log.* {
        size 3G
        missingok
        rotate 5
        compress
        notifempty
        nocreate
}

Usando logrotate

--force /etc/logrotate.d/upstart

Girar.

logs configuration
  • 1 respostas
  • 430 Views
Martin Hope
KuboMD
Asked: 2018-08-02 05:22:59 +0800 CST

Não é possível localizar o pacote? O repositório foi adicionado!

  • 1

Estou preso aqui. Estou tentando atualizar o java em uma máquina corporativa com firewalls estritos.

Como tal, não posso usar o comando ppa e adicionei o repositório WebUpd8 à minha lista de fontes manualmente:

deb http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu trusty main
deb-src http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu trusty main

Quando executo o apt-get update:

root@graylog:/home/ubuntu# sudo apt-get update | grep -i ppa
Hit http://ppa.launchpad.net trusty InRelease
Hit http://ppa.launchpad.net trusty/main Sources
Hit http://ppa.launchpad.net trusty/main amd64 Packages
Hit http://ppa.launchpad.net trusty/main i386 Packages
Hit http://ppa.launchpad.net trusty/main Translation-en

e tente instalar...

root@graylog:/home/ubuntu# sudo apt-get install oracle-java8-installer
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package oracle-java8-installer

Alguma ideia? Estou tentando obter o Java como um pré-requisito para configurar o Graylog. Obrigado.

ubuntu apt
  • 1 respostas
  • 3643 Views
Martin Hope
KuboMD
Asked: 2018-07-25 06:37:33 +0800 CST

Retenção de saída de comando durante a contagem de linhas

  • 1

Eu estava lendo o número de linhas de saída do programa anterior e achei útil. No entanto, enquanto

$ grep -i [pattern, file] | tee >(wc -l) 

me dá uma boa saída das linhas grep e o número de correspondências, quero perguntar se alguém sabe como salvar o número de correspondências para uma variável no meu script. Eu quero produzi-lo dentro de uma string com formatação mais legível.

bash grep
  • 1 respostas
  • 138 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