Simule a desconexão de tcp usando socat

2

Estou tentando usar o comando socat para simular uma desconexão de tcp entre meu serviço de cliente e o processo do agente do EMS em um host remoto. Estou executando este comando socat

socat TCP-LISTEN: 8123, bifurcação TCP: nome do host remoto: porta

Eu executo esse comando em um servidor, digamos server1 - e estou configurando meu serviço de cliente para conectar-me ao server1: 8123 - que permite ao cliente conectar-se a o corretor EMS real.

No entanto - quando eu quero simular uma desconexão - eu estou matando o processo socat (eu acho o pid por ps aux | grep socat) - mas isso não parece matar a conexão - eu posso ver que o cliente ainda é capaz para conversar com o corretor ems. (por que socat não é morto neste estágio?)

No entanto - Se agora eu reiniciar meu cliente, ele falhará ao se conectar ao broker (porque agora o processo socat está realmente morto).

Eu não consigo descobrir o que está acontecendo aqui - como posso garantir que o processo de socat é definitivamente morto?

    
por Bhaskar 19.12.2013 / 11:29

1 resposta

1

Eu acho que isso depende de como você mata o processo socat. Provavelmente socat não aceita o sinal que você está usando, tente com 9:

kill -9 pid

A saída de ps deve mostrar mais de um pid para o processo socat, você tem que escolher o caminho certo.

Logo após você ter executado o comando socat, você verá apenas um processo:

[root@centos03 ~]# ps aux | grep socat
root     28801  0.0  0.3  41684  1936 pts/0    S+   15:22   0:00 socat TCP-LISTEN:8123,fork TCP:web:80
root     28803  0.0  0.1 103244   848 pts/3    S+   15:22   0:00 grep socat

Quando o cliente estabelecer uma conexão, você verá outro processo:

[root@centos03 ~]# ps aux | grep socat
root     28801  0.0  0.3  41684  1940 pts/0    S+   15:22   0:00 socat TCP-LISTEN:8123,fork TCP:web:80
root     28807  0.0  0.2  45860  1452 pts/0    S+   15:25   0:00 socat TCP-LISTEN:8123,fork TCP:web:80
root     28809  0.0  0.1 103244   844 pts/3    S+   15:26   0:00 grep socat

Agora, se você matar o processo com o pid 28801, nenhuma nova conexão será permitida, mas o cliente ainda estará conectado até que você mate o processo com o pid 28807

    
por 19.12.2013 / 12:01

Tags