Escreva mensagens de texto entre Unix e Windows

10

É possível enviar mensagens de texto entre dois usuários da mesma LAN, mas o primeiro executando o Windows com cmd e o segundo executando o Linux / Unix?

Não estou procurando um serviço de mensagens instantâneas. Eu gostaria de digitar no shell do Linux algo como

write user@192.168.x.x:port message

para que o usuário do Windows possa ler em sua janela de cmd o texto message; o usuário do Windows poderá responder com outro comando. É possível?

Eu li sobre o msgcomando do Windows, mas ele não funciona em todas as versões do sistema operacional. Mais alguma coisa?

Em vez do PuTTY, eu gostaria de usar o shell do Linux e o cmd do Windows.

BowPark
fonte
Esse é um tipo de serviço de mensagens instantâneas, embora integrado ao terminal.
Pavel Šimerda

Respostas:

5

No Unix: nc -l 192.168.1.10 32849

No Windows: telnet 192.168.1.10 32849

Onde 32849 é uma porta arbitrária permitida nas regras de firewall e o IP é o IP de escuta da máquina Unix. ncé o utilitário netcat.

projectdp
fonte
Boa ideia! no windows7 x64 eu precisava instalar o "recurso windows" do cliente telnet. a idéia era fazer, pkgmgr /iu:"TelnetClient"mas isso resultou em Operation failed with 0x8007000B An attempt was made to load a program with an incorrect format., depois do log que vi You cannot service a running 64-bit operating system with a 32-bit version. Consegui trabalhar com c:\windows\sysnative\dism.exe /online /norestart /logpath:"c:\foo.txt" /enable-feature /ignorecheck /featurename:"TelnetClient"ênfase sysnative. Instalou c:\windows\sysnative\telnet.exe.
N611x007
Eu tive que usar -pcomo nc -l 192.168.1.10 -p 32849, graças a JohnMurhy !
N611x007
Eu tive que usar IP diferente nos dois comandos. (IP do outro da máquina de cada lado.)
n611x007
Testei novamente após esses novos comentários, não preciso do sinalizador -p usando o comando [Free] BSD nc. Recebo "wolf% sudo nc -l 10.0.0.1 -p 8888 nc: não é possível usar -p e -l ". Eu também esqueci de mencionar que você precisa de acesso de superusuário para vincular a portas arbitrárias. Não sei por que o naxa precisa de IPs diferentes ou mesmo como é possível que isso esteja funcionando, não deve funcionar. Isso ocorre porque o sinalizador -l significa que ele está ouvindo localmente na combinação de IP e porta * nix. Não tem nada a ver com o IP da máquina Windows. Telnet está agindo como o cliente neste cenário.
Projectdp
3

A idéia da resposta do projectdp : netcat on linux serve um telnet em vitória . -pNo entanto, são necessários e diferentes endereços IP nas duas máquinas:

  • No Linux: netcat -l 10.0.0.2 -p 14415- se o seu Windows estiver em 10.0.0.2

  • No Windows: telnet 10.0.0.1 14415- se o seu linux estiver em 10.0.0.1

  • Para sair do telnet, pressione o ^]que significa Ctrl+ ]e depois digite q.

  • Para escolher sua porta arbitrária como 14415uma tabela útil, é em David Vereb .

No entanto, no win7 x64, tive que habilitar o telnet primeiro, uma longa história curta:

  • c:\windows\sysnative\dism.exe /online /norestart /logpath:"c:\foo.txt" /enable-feature /ignorecheck /featurename:"TelnetClient"

  • O problema na tentativa original foi pkgmgrtentar usar 32 bits disme reclamar por 64 bits. Eu tenho a sysnativeidéia de Osman Shener .

  • Ele instala para c:\windows\sysnative\telnet.exe. Coloquei c:\windows\sysnativena variável de ambiente PATH com sysdm.cpl.

  • Se você tem DeVuan ou Ubuntu para Linux, sudo apt-get install netcat-traditional

O bate-papo parecia:

devuan-netcat win7-telnet

n611x007
fonte
Olá naxa, estou um pouco confuso com o seu teste aqui, como você pode abrir um soquete no Linux usando o IP do host do Windows? Você não está escutando para os hosts do Windows IP, você está ouvindo no Linux anfitriões IP e porta. Quando você está usando o telnet do host do Windows, está agindo como um cliente que ingressa no soquete de escuta e no IP da máquina linux. Vou ter que testá-lo com seu método.
projectdp
Naxa, tentei e não sei como você está conectando com êxito essas duas máquinas. nc deve estar escutando o endereço IP local e a porta local. O telnet deve estar conectado ao ip remoto e à porta remota ... você pode listar a saída do seu ipconfig / ifconfig em cada máquina?
Projectdp
@projectdp ah eu encontrei isso de novo. Então, no final, eu concordo com você que nem deveria ter funcionado, mas aparentemente funcionou e só funcionou assim. Acho que não respondi porque queria testar isso. Infelizmente, me empolguei e não tenho mais as máquinas. Eu acho que eles foram virtualizados que eu sei que para ser capaz de fazer com que as anomalias de rede mais estranhos em geral ...
n611x007
1

Que tal NET SEND {name1 | * | /DOMAIN[:name] | /USERS} messagena máquina Windows e echo "message" | smbclient -M name2na caixa Linux? name1 e name2 são os nomes netbios das máquinas.

noleti
fonte
por favor, esclareça um pouco! O comando 'NET SEND' é geralmente usado para a passagem de mensagem win to win usando 'messenger'. É possível usar no caso do Bash para ganhar também ??
difratados
@diffracteD Eu não tenho uma máquina Windows para testar. Presumo que com "Bash to Win", você quer dizer do Linux para o Windows? Meu segundo exemplo deve fazer exatamente isso
noleti
0

Existe uma ferramenta interessante que permite executar comandos do Windows no Linux, o nome é winexe.

Assim, você pode enviar uma mensagem da mesma máquina para o console digitando: winexe -U domain/user%password --interactive=1 //WindowsMachine "msg console \"Your message goes here.\""

Como você pode ver, a resposta de noleti é muito mais simples, mas com o winexe você também pode abrir um cálculo ou o que quiser nessa máquina. Nós o usamos para fazer instalações autônomas em máquinas Windows a partir de um script em lote no Linux. Muito legal e economiza tempo ...

YoMismo
fonte