Problema com o comando MAWK em chat feito por Netcat [RESOLVIDO]

1. Problema com o comando MAWK em chat feito por Netcat [RESOLVIDO]

Felipe Fernandes
Mewbi

(usa Debian)

Enviado em 31/12/2018 - 17:33h

Bem, estou criando um script que realiza um chat entre duas máquinas por meio do netcat e utilizo o comando "mawk" para que o usuário (tanto o que hosteia o chat quanto o que entre nele) tenha um nome. Este funciona da seguinte maneira:

Para criar o chat: mawk -W interactive '$0="<nome-da-pessoa>: "$0' | nc -vlp <porta-de-comunicação>
Para entrar no chat: mawk -W interactive '$0="<nome-da-pessoa>: "$0' | nc <ip-da-pessoa-que-criou-o-chat> <porta-de-comunicação>

Quando o processo é feito digitando o comando direto no terminal o chat funciona normalmente, porém no script gostaria de montar da seguinte maneira:
(vou supor só o usuário que esta conectando)

read -p "Digite o seu nome: " nome
read -p "Digite o IP do host do chat: " ip_host
read -p "Digite a porta do chat: " porta_chat
mawk -W interactive '$0="${nome}: "$0' | nc ${ip_host} ${porta_chat}

Quando realizo o teste o usuário consegue se conectar, porém quando ele manda uma mensagem aparece "${nome}: Ola", ou seja, o comando não interpreta a variável. Tentei diversas formas de resolver isto porém acabou aparecendo outros problemas.
Qualquer ajuda é relevante
(Esta é a primeira vez que pergunto algo no site, peço desculpa por qualquer erro na pergunta)


  


2. Re: Problema com o comando MAWK em chat feito por Netcat [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/01/2019 - 23:20h


Mewbi escreveu:

Bem, estou criando um script que realiza um chat entre duas máquinas por meio do netcat e utilizo o comando "mawk" para que o usuário (tanto o que hosteia o chat quanto o que entre nele) tenha um nome. Este funciona da seguinte maneira:

Para criar o chat: mawk -W interactive '$0="<nome-da-pessoa>: "$0' | nc -vlp <porta-de-comunicação>
Para entrar no chat: mawk -W interactive '$0="<nome-da-pessoa>: "$0' | nc <ip-da-pessoa-que-criou-o-chat> <porta-de-comunicação>

Quando o processo é feito digitando o comando direto no terminal o chat funciona normalmente, porém no script gostaria de montar da seguinte maneira:
(vou supor só o usuário que esta conectando)

read -p "Digite o seu nome: " nome
read -p "Digite o IP do host do chat: " ip_host
read -p "Digite a porta do chat: " porta_chat
mawk -W interactive '$0="${nome}: "$0' | nc ${ip_host} ${porta_chat}

Quando realizo o teste o usuário consegue se conectar, porém quando ele manda uma mensagem aparece "${nome}: Ola", ou seja, o comando não interpreta a variável. Tentei diversas formas de resolver isto porém acabou aparecendo outros problemas.
Qualquer ajuda é relevante
(Esta é a primeira vez que pergunto algo no site, peço desculpa por qualquer erro na pergunta)


Boa noite.
coloque a var nome entre aspas simples....
exemplo:
mawk -W interactive '$0='${nome}': $0' | nc ${ip_host} ${porta_chat} 

Ou use aspas duplas no comando mawk.
mawk -W interactive "$0="${nome}: "$0" | nc ${ip_host} ${porta_chat} 

marcelo oliver


3. Re: Problema com o comando MAWK em chat feito por Netcat [RESOLVIDO]

Felipe Fernandes
Mewbi

(usa Debian)

Enviado em 09/01/2019 - 11:48h

msoliver escreveu:

Boa noite.
coloque a var nome entre aspas simples....
exemplo:
mawk -W interactive '$0='${nome}': $0' | nc ${ip_host} ${porta_chat} 

Ou use aspas duplas no comando mawk.
mawk -W interactive "$0="${nome}: "$0" | nc ${ip_host} ${porta_chat} 

marcelo oliver


Bom dia.
Obrigado por responder. Contudo ao testar as sugestões que me apresentou continuo com erro.
Quando utilizo aspas simples aparece " mawk: line 1: syntax error at or near: "
Quando utilizo aspas duplas aparece " mawk: 1: unexpected character '.' "


4. Re: Problema com o comando MAWK em chat feito por Netcat [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 09/01/2019 - 14:58h


Mewbi escreveu:

msoliver escreveu:

Boa noite.
coloque a var nome entre aspas simples....
exemplo:
mawk -W interactive '$0='${nome}': $0' | nc ${ip_host} ${porta_chat} 

Ou use aspas duplas no comando mawk.
mawk -W interactive "$0="${nome}: "$0" | nc ${ip_host} ${porta_chat} 

marcelo oliver


Bom dia.
Obrigado por responder. Contudo ao testar as sugestões que me apresentou continuo com erro.
Quando utilizo aspas simples aparece " mawk: line 1: syntax error at or near: "
Quando utilizo aspas duplas aparece " mawk: 1: unexpected character '.' "


Boa tarde Mewbi.
Qual a necessidade do comando "mawk -W interative...."
É somente para passar a var nome para o comando nc?
Se for isso, tente:
echo "${nome}"|nc ${ip_host} ${porta_chat}



5. Re: Problema com o comando MAWK em chat feito por Netcat [RESOLVIDO]

Felipe Fernandes
Mewbi

(usa Debian)

Enviado em 09/01/2019 - 15:53h

msoliver escreveu:

Boa tarde Mewbi.
Qual a necessidade do comando "mawk -W interative...."
É somente para passar a var nome para o comando nc?
Se for isso, tente:
echo "${nome}"|nc ${ip_host} ${porta_chat}


Boa tarde
Bem, a necessidade do comando é que para quando eu digite algo o outro usuário veja meu nome seguida da mensagem que quero passar.

Ex: Eu digito Oi. O usuário tem que receber "Mewbi: Oi"

Realizei o teste com o echo, acontece que ao conectar pelo nc ele envia o conteúdo da variável "nome" apenas uma vez e automaticamente, além disso eu não consigo mandar nenhuma mensagem para a outra pessoa depois de conectar, apesar recebo mensagem.


6. Re: Problema com o comando MAWK em chat feito por Netcat [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 10/01/2019 - 13:40h


Mewbi escreveu:

msoliver escreveu:

Boa tarde Mewbi.
Qual a necessidade do comando "mawk -W interative...."
É somente para passar a var nome para o comando nc?
Se for isso, tente:
echo "${nome}"|nc ${ip_host} ${porta_chat}


Boa tarde
Bem, a necessidade do comando é que para quando eu digite algo o outro usuário veja meu nome seguida da mensagem que quero passar.

Ex: Eu digito Oi. O usuário tem que receber "Mewbi: Oi"

Realizei o teste com o echo, acontece que ao conectar pelo nc ele envia o conteúdo da variável "nome" apenas uma vez e automaticamente, além disso eu não consigo mandar nenhuma mensagem para a outra pessoa depois de conectar, apesar recebo mensagem.


Boa tarde Mewbi.
Teste o comando abaixo:
mawk -W interactive '{printf $0}' <<< "$nome" | nc ${ip_host} ${porta_chat}

Marcelo Oliver


7. Re: Problema com o comando MAWK em chat feito por Netcat [RESOLVIDO]

Felipe Fernandes
Mewbi

(usa Debian)

Enviado em 10/01/2019 - 15:21h

msoliver escreveu:

Boa tarde Mewbi.
Teste o comando abaixo:
mawk -W interactive '{printf $0}' <<< "$nome" | nc ${ip_host} ${porta_chat}

Marcelo Oliver


Boa tarde
Testei o comando e continua com o mesmo problema anterior, o usuário se conecta, envia o nome do usuário para o outro indivíduo e só consegue receber as mensagens, não consegue enviar nada.


8. Re: Problema com o comando MAWK em chat feito por Netcat [RESOLVIDO]

Osama Jr.
/bin/laden

(usa Void Linux)

Enviado em 11/01/2019 - 19:30h

Tenta assim cara:

mawk -W interactive -v nome="$nome" '$0=nome: $0' | nc ${ip_host} ${porta_chat} 


##########################
echo 1244394795515721490698P | dc


9. Re: Problema com o comando MAWK em chat feito por Netcat [RESOLVIDO]

Felipe Fernandes
Mewbi

(usa Debian)

Enviado em 12/01/2019 - 00:04h

/bin/laden escreveu:

Tenta assim cara:

mawk -W interactive -v nome="$nome" '$0=nome: $0' | nc ${ip_host} ${porta_chat} 




Boa noite

Funcionou agora o Script! Tive que fazer uma adaptação no comando, porque ao colocar : após "nome" dava erro de syntax, assim fiz da seguinte forma

mawk -W interactive -v nome="${nome}: " '$0=nome $0' | nc ${ip_host} ${porta_chat} 


Agora me aparenta que tudo está funcionando certinho.

Muito obrigado /bin/laden e msoliver, vocês me ajudaram bastante!