Ngrep comportamento estranho

1

Eu tenho um problema muito estranho.

Estou usando o Fedora (com o KDE), e preciso do ngrep para verificar os dados enviados que são transferidos através de uma porta específica ...

A parte estranha é que quando meu terminal (mais precisamente, Konsole, também tentei com outros aplicativos de terminal - Yakuake, Guake, Terminator, etc) está em tela cheia em um display maior (21 "- 1920x1080) a saída ngrep está parecendo assim:

T 127.0.0.1:39167 -> 127.0.0.1:8983 [AP]                                                                                                                                                                                            
GET /solr/col                                                                                                                                                                                                                                                                   
lection1/sele                                                                                                                                                                                                                                                                   
ct?q=%28entit                                                                                                                                                                                                                                                                   
yType%3A61+AN                                                                                                                                                                                                                                                                   
D+owncCompany                                                                                                                                                                                                                                                                   
_b%3Atrue%29&                                                                                                                                                                                                                                                                   
fl=*%2C%5Bchi                                                                                                                                                                                                                                                                   
ldren%5D&star                                                                                                                                                                                                                                                                   
t=0&rows=10&s                                                                                                                                                                                                                                                                   
ort=entityId_                                                                                                                                                                                                                                                                   
s+asc%2Cid+as                                                                                                                                                                                                                                                                   
c&wt=javabin&                                                                                                                                                                                                                                                                   
version=2 HTT                                                                                                                                                                                                                                                                   
P/1.1..User-A
gent: Solr[or
g.apache.solr
.client.solrj
.impl.HttpSol
rClient] 1.0.
.Host: 127.0.
0.1:8983..Con
nection: Keep
-Alive....   

.. é de alguma forma embrulhado ... eu não sei exatamente.

Mas se eu mantiver o terminal no monitor do meu laptop (16 "- 1600x900), a saída será esticada em todo o terminal, que é o comportamento esperado.

Eu procurei (o google inteiro :)) mas não consigo descobrir onde está o problema. Eu pensei que poderia ser algo errado com a minha configuração de monitores, mas em casa eu tenho Kubuntu e um grande display (21 "- 1920x1080), e o comportamento estranho é o mesmo. A única solução que tenho é manter o terminal não ligado. tela cheia ou para mantê-lo em uma tela menor.Eu acho que isso é algo sobre configurações de colunas de terminal e eu não sei exatamente como corrigir isso.

Obrigado antecipadamente, Andrei

    
por Ciobanu Andrei 25.11.2015 / 09:05

1 resposta

2

Algumas possibilidades vêm à mente:

  • o programa detectou (por qualquer razão que a tela é grande e reduzirá a largura das colunas para algum propósito obscuro dos desenvolvedores
  • o programa não detecta o tamanho da tela corretamente. Como sugerido por @ tom-zych , isso pode acontecer se o programa não responder adequadamente a uma janela. redimensionamento do evento. As soluções oferecidas em Como resolver o problema que uma tela do Terminal está desarrumada? (geralmente após um redimensionamento) são úteis para casos diferentes do programa final ( ngrep ), por exemplo, o programa resize é principalmente útil em casos em que o terminal não atualiza seu tamanho como mostrado por stty -a .

No primeiro caso, a página de manual para ngrep (8) é de pouca ajuda, já que o único lugar que ele menciona a largura da coluna é usando uma opção:

-c cols
Ignore the detected terminal width and force the column width to the specified size.

e (repetindo-se)

-c cols
Explicitly set the console width to cols. Note that this is console width, and not the full width of what ngrep prints out as payloads; depending on the output mode ngrep may print less than cols bytes per line (indentation).

mas implica que ngrep está fazendo alguma escolha de formatação. A procura de informações aqui mostra um commit :

allow column widths greater than 255.

que altera o tipo usado para representar o número de colunas de 8-bits para 32-bits . Se a sua tela redimensionada (usando uma fonte pequena) fosse maior que 255 colunas, ngrep seria agrupado, dando-lhe apenas 5 colunas a menos do que o excesso acima de 255. A partir do exemplo dado, parece que a largura do seu terminal pode ser 255 + 5 + 15 = 270 caracteres.

Você pode verificar isso usando stty -a .

    
por 25.11.2015 / 12:36