Jump to content

Recommended Posts

Posted (edited)

Aproveitando a deixa... por acaso alguém sabe se existe algo em python (biblioteca, programa, etc. ) que permita determinar que conexões se encontram ativas numa determinada máquina ?

Será o netstat algo que poderia ajudar ?

Edited by Psycho_Mind
Posted

Pessoalmente não conheço nenhum modulo nativo que faça esse trabalho.

Podes utilizar o modulo os.system() ou os.Popen() para executar o comando netstat. Mas se depois precisares do output do comando terás de ser tu a fazer a interpretação dessa informação...

Cumps!

Posted (edited)

Pessoalmente não conheço nenhum modulo nativo que faça esse trabalho.

Podes utilizar o modulo os.system() ou os.Popen() para executar o comando netstat. Mas se depois precisares do output do comando terás de ser tu a fazer a interpretação dessa informação...

Cumps!

Sim, depois vai ser necessário obter a informação, principalmente guarda-la para um ficheiro. Mas antes de mais preciso de conseguir fazer essa deteção. Pelo que me dizes não vou estar mais do que a chamar o netStat através do comando chamado através do código a fim de obter o que pretendo, depois terei entao sim que implementar uma forma de analisar (neste caso guarda-la num ficheiro) o conteudo da deteção feita com o netStat

Edited by Psycho_Mind
Posted

Eu não costumo fazer esse tipo de programação mas na net existem várias propostas. Se pretendes testar a conexão basta que tentes ligar-te à internet como neste falam neste tópico:

http://stackoverflow.com/questions/3764291/checking-network-connection

Se pretendes saber que ligações estão abertas ("disponíveis" talvez seja melhor palavra?) neste link está feito um substituto para o parsing do netstat:

http://code.activestate.com/recipes/392572/

Parece-me a mim que este tutorial terá o suficiente para construires o teu próprio código para fazeres isso:

http://pymotw.com/2/socket/tcp.html

E fica também o link dos protocolos de internet de python:

http://docs.python.org/2/library/internet

Nota que embora esteja confortável a ler código de Python a minha experiência com internet management reduz-se a acessos furtuitos a links e requisições automáticas de downloads pelo que poderei estar a interpretar mal o que pretendes. De qualquer maneira, boa sorte.

Posted

Vou então estudar o caso segundo o que me referiste.

A intenção não é mais do que numa determinada rede local conseguir saber quais as conexoes activas numa determinada máquina. Só não sei até que ponto isso seja de facto possivel de fazer. Do pouco entendimento que tenho no assunto, sempre pressupus que fosse possivel apenas de verificar isso na máquina onde se corre o programa , não numa máquina 'externa' ainda que na mesma rede.

Posted

Se a maquina em questão estiver ligada não vejo motivo para não se poder fazer. De qualquer maneira por conexões activas assumo que te refiras à listagem das ligações que a máquina esteja a detectar (wireless ou fio) estejam ligadas ou não.

Outra hipótese é a lista das configurações de rede (mais uma vez funcionais ou não) que um utilizador tenha no seu computador. Por exemplo alguém com um portátil que tenha uma configuração de rede que só funciona no trabalho e outra em casa. Aliás isto é bastante comum em estudantes universitários de instituições com a sua própria rede wireless ou fio.

Mas independente das informações que precisas consegues encontrar função análoga no windows, por exemplo?

É que na versão do windows do pc no qual estou a escrever agora (windows 7 provavelmente) se for aqui: Control Panel\Network and Internet\Network and Sharing Center , vou ter uma divisão que diz "view your active networks" que talvez seja o que tu pretendas. Não estou em condições de experimentar agora (não tenho o Python instalado neste pc) mas se eu for ver a listagem de ficheiros (ou directorias) dentro do caminho que dei acima não me irá aparecer precisamente isso?

Se quiseres experimentar o código, se a memória não me falha:

import os

os.listdir(r'Control Panel\Network and Internet\Network and Sharing Center')
Posted (edited)

Ora viva.

Parece que afinal não existe a necessidade de ser em outras máquinas na rede, basta apenas para a própria máquina, ou seja, onde se corre a ferramenta para verificar as conexões em processo. Neste caso estas conexões referem-se a todas as conexões TCP/IP ativas na máquina. Sendo necessário de adquirir apenas o endereço (IP) externo com o qual se está a fazer a ligação e o porto utilizado.

Se poderem dar dicas para me orientar em como saber o endereço externo agradecia.

Edited by Psycho_Mind
Posted

Aproveitando a deixa... por acaso alguém sabe se existe algo em python (biblioteca, programa, etc. ) que permita determinar que conexões se encontram ativas numa determinada máquina ?

Será o netstat algo que poderia ajudar ?

Se o servidor for linux, você poderia procurar por um software chamado de "iftop", o mesmo mostra todas as conexões ativas ao servidor, e a quantidade de KB a serem enviados para cada ip.

Posted (edited)

Se o servidor for linux, você poderia procurar por um software chamado de "iftop", o mesmo mostra todas as conexões ativas ao servidor, e a quantidade de KB a serem enviados para cada ip.

Mas o iftop poderá ser 'complexo' em demasia para o que pretendo. Visto só precisar do IP externo (remote) e o porto associado, tenho procurado a partir de codigo implementado (netstat) tentar conseguir obter o que pretendo, ainda que infelizmente sem sucesso.

Edited by Psycho_Mind
Posted (edited)

Ou talvez passar por verificar a informação pretendida pelo netstat, mas guardar apenas a informação (end. externo e porto externo) pretendida num ficheiro.

Pelo que percebi posso guardar a informação fazendo #netstat > local_onde_guardar\nome_do_ficheiro.txt, mas guarda-me tudo... como posso especificar para o meu caso apenas os dados que preciso ? Talvez guardando o ficheiro do log em .csv poderia facilitar depois o acesso aos dados especificos que se pretende.

P.S. Sem querer acrescentei uma nova alteração mas não na que já tinha feito (e não sei como apagar esta :S... Sorry!)

Edited by Psycho_Mind

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.