[python-brasil] Detectar tipo de memória com python

329 views
Skip to first unread message

Leandro Quadros Durães Braga

unread,
Nov 8, 2010, 4:10:07 PM11/8/10
to python...@yahoogrupos.com.br
Namastê,
pessoal seguinte por diversão e para exercitar estou criando um script
que gera inventário de máquinas em rede.
Esse inventário deverá ter informações da memória do computador.
Queria fazer tanto pra Linux quanto pra Windows.
Bem no Linux foi fácil pegar as informações (só com o python/ módulos
e o que o próprio sistema oferece).
No Windows fui usar o WMI que parecia ser a maneira mais rápida pra
fazer isso usando um módulo para python.
Só que o método que retorna o tipo de memória ram (ddr,ddr2,etc) não
funciona para windows xp server 2003 por causa disso:
http://support.microsoft.com/kb/922813

Bem então pensei como será que programas como Everest e outros
conseguem essas informações?
Ai goglando descobri que é através de uma eeprom que fica nos pentes
de memória que se chama SPD.
E descobri que esse SPD usa um barramento chamado i2c.

Ai que entra a dúvida ! Nunca fiz algo desse tipo! Queria saber como
ler esse SPD e buscar essas informações.
Existe um módulo em python para trabalhar com o i2c(
http://pyi2c.sourceforge.net/ ) mas não entendi como usar.
Ou saber se é possivel fazer isso com python.

Qualquer luzinha é de grande ajuda!

Obrigado!


------------------------------------

,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/

<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html


Leonardo Santagada

unread,
Nov 8, 2010, 5:18:27 PM11/8/10
to python...@yahoogrupos.com.br
2010/11/8 Leandro Quadros Durães Braga <leandro...@gmail.com>:

> Namastê,
> pessoal seguinte por diversão e para exercitar estou criando um script
> que gera inventário de máquinas em rede.
> Esse inventário deverá ter informações da memória do computador.
> Queria fazer tanto pra Linux quanto pra Windows.
> Bem no Linux foi fácil pegar as informações (só com o python/ módulos
> e o que o próprio sistema oferece).
> No Windows fui usar o WMI que parecia ser a maneira mais rápida pra
> fazer isso usando um módulo para python.
> Só que o método que retorna o tipo de memória ram (ddr,ddr2,etc) não
> funciona para  windows xp  server 2003 por causa disso:
> http://support.microsoft.com/kb/922813

A solução mais simples é não usar o server 2003, sistemas de 7 anos
deveriam estar sendo aposentados, ainda mais quando o windows server
2008 r2 é tão melhor que o 2003.

> Bem então pensei como será que programas como Everest e outros
> conseguem essas informações?
> Ai goglando descobri que é através de uma eeprom que fica nos pentes
> de memória que se chama SPD.
> E descobri que esse SPD usa um barramento chamado i2c.
>
> Ai que entra a dúvida ! Nunca fiz algo desse tipo! Queria saber como
> ler esse SPD e buscar essas informações.
> Existe um módulo em python para trabalhar com o i2c(
> http://pyi2c.sourceforge.net/ ) mas não entendi como usar.
> Ou saber se é possivel fazer isso com python.

Olha da pra fazer, tu precisa descobrir como mandar dados pros pentes
de memória, o protocolo é só parte do mistério. Se tu descobrir isso
fica mais fácil te dizer como fazer com python.

Outra idéia é usar um software q pega essas informações e tirar os
dados do software com o python.

--
Leonardo Santagada

Pedro Werneck

unread,
Nov 8, 2010, 7:14:44 PM11/8/10
to python...@yahoogrupos.com.br
2010/11/8 Leandro Quadros Durães Braga <leandro...@gmail.com>
[corta]

> Ai que entra a dúvida ! Nunca fiz algo desse tipo! Queria saber como
> ler esse SPD e buscar essas informações.
> Existe um módulo em python para trabalhar com o i2c(
> http://pyi2c.sourceforge.net/ ) mas não entendi como usar.
> Ou saber se é possivel fazer isso com python.


Não. Essa lib é para comunicar *diretamente* com equipamentos
eletrônicos externos usando i2c. Seria você ligar fios à seus pentes
de memória e à sua porta paralela ou serial e daí acessar pela lib, o
que não acho que é o que você quer.


---
Pedro Werneck

Leonardo Santagada

unread,
Nov 9, 2010, 4:48:43 AM11/9/10
to python...@yahoogrupos.com.br
2010/11/8 Pedro Werneck <pjwe...@gmail.com>:

> 2010/11/8 Leandro Quadros Durães Braga <leandro...@gmail.com>
> [corta]
>> Ai que entra a dúvida ! Nunca fiz algo desse tipo! Queria saber como
>> ler esse SPD e buscar essas informações.
>> Existe um módulo em python para trabalhar com o i2c(
>> http://pyi2c.sourceforge.net/ ) mas não entendi como usar.
>> Ou saber se é possivel fazer isso com python.
>
>
> Não. Essa lib é para comunicar *diretamente* com equipamentos
> eletrônicos externos usando i2c. Seria você ligar fios à seus pentes
> de memória e à sua porta paralela ou serial e daí acessar pela lib, o
> que não acho que é o que você quer.

Tá mas se os outros programas conseguem deve ter alguma chamada da
bios ou algo assim que deixa tu se comunicar com o tal do chip esse,
talvez criando uma porta serial virtual. Esse esquema é o mistério q
ele tem que resolver, ou não?

--
Leonardo Santagada

Pedro Werneck

unread,
Nov 9, 2010, 5:17:44 AM11/9/10
to python...@yahoogrupos.com.br
2010/11/9 Leonardo Santagada <sant...@gmail.com>

>
> Tá mas se os outros programas conseguem deve ter alguma chamada da
> bios ou algo assim que deixa tu se comunicar com o tal do chip esse,
> talvez criando uma porta serial virtual. Esse esquema é o mistério q
> ele tem que resolver, ou não?

Sem dúvida, esse é o mistério, mas ele não conseguirá resolvê-lo com
essa lib, que é para aplicações de bem mais baixo nível. A intenção
certamente não é comunicar diretamente com a eeprom dos pentes de
memória manipulando o clock e a leitura de bits um a um. Os outros
programas fazem isso através do smbus da placa mãe. No Linux há
suporte a isso no lm_sensors, mas em windows não faço idéia.

O que posso garantir é que querer lidar diretamente com a lib i2c é
perda de tempo.

Talvez no Windows seja melhor usar uma aplicação qualquer que lê e
usar um leitor de telas para capturar a saída.


---
Pedro Werneck

Leandro Quadros Durães Braga

unread,
Nov 9, 2010, 2:55:15 PM11/9/10
to python...@yahoogrupos.com.br
Olá a todos,
antes de tudo obrigado pelas respostas!
Leonardo quanto a usar o Winodws Server 2003 ou 2008 não é bem está a
questão. Queria algo que funcinasse no Windows Server 2003 e no Xp igual a
softwares que como Everest ,CPU-Z e usando WMI não dá pra fazer! Se fosse
pra mim colocar um desses sistemas em algum servidor meu certamente não
ficaria com nenhum dos dois! Mas a idéia do script que estou fazendo é pra
rodar em qualquer um deles!

Pedro entedi! O i2c não vai servir de nada mesmo!
Sei da existência do lm_sensor no Linux e através de script que o utilizam
que no Linux conseguesse essas informações (no meu caso tipo de memória )
facilmente!

Quanto a usar outro programa no Windows e usar a saída dele pensei nisso.
Mas como o intuito aqui é mesmo "brincar",aprender! Queria saber como isto é
feito da maneira que é feita em determinados softwares como os já citados
acima. E quando fui atrás disso não consegui muita coisa não.

Peço para que se mais alguêm no grupo tiver uma dica,um caminho a seguir
,uma opnião que nos passe aqui!

Obrigado


2010/11/9 Pedro Werneck <pjwe...@gmail.com>

>
>
> 2010/11/9 Leonardo Santagada <sant...@gmail.com <santagada%40gmail.com>>


>
> >
> > Tá mas se os outros programas conseguem deve ter alguma chamada da
> > bios ou algo assim que deixa tu se comunicar com o tal do chip esse,
> > talvez criando uma porta serial virtual. Esse esquema é o mistério q
> > ele tem que resolver, ou não?
>
> Sem dúvida, esse é o mistério, mas ele não conseguirá resolvê-lo com
> essa lib, que é para aplicações de bem mais baixo nível. A intenção
> certamente não é comunicar diretamente com a eeprom dos pentes de
> memória manipulando o clock e a leitura de bits um a um. Os outros
> programas fazem isso através do smbus da placa mãe. No Linux há
> suporte a isso no lm_sensors, mas em windows não faço idéia.
>
> O que posso garantir é que querer lidar diretamente com a lib i2c é
> perda de tempo.
>
> Talvez no Windows seja melhor usar uma aplicação qualquer que lê e
> usar um leitor de telas para capturar a saída.
>
> ---
> Pedro Werneck
>
>


[As partes desta mensagem que não continham texto foram removidas]

Edson Fugió

unread,
Nov 10, 2010, 8:18:20 AM11/10/10
to python...@yahoogrupos.com.br
Oi Leandro,

Sugiro que use a interface DMI
http://en.wikipedia.org/wiki/Desktop_Management_Interface, existe um módulo
python em
http://www.autonomy.net.au/display/pydmi que é baseda no dmidecode do linux
http://www.nongnu.org/dmidecode/

Abraços

--

Edson Fugió

2010/11/9 Leandro Quadros Durães Braga <leandro...@gmail.com>

>
> Peço para que se mais alguêm no grupo tiver uma dica,um caminho a seguir
> ,uma opnião que nos passe aqui!
>
>

Leandro Quadros Durães Braga

unread,
Nov 18, 2010, 10:10:16 AM11/18/10
to python...@yahoogrupos.com.br
Pessoal,
muito obrigado pelas respostas.
Bem eu pesquisei, não achei nada do que eu queria, que era fazer tudo na
unha mesmo!
Vou continuar tentando mas por enquanto usei a dica do Edson de usar o
dmidecode que no Windows é um aplicativo que retorna informações. Ai trato
elas da forma que eu quero!
Se no futuro conseguir fazer algo do jeito que eu inicialmente queria,
coloco aqui!

Novamente muito obrigado!

Leando

Eldio Santos Jr.

unread,
Nov 18, 2010, 11:23:17 AM11/18/10
to python...@yahoogrupos.com.br
Rapaz, não conheço muitode Python, por isso não sei como ele se acopla ao
sistema, mas sei que o Windows fornece um pacote com funcionalidades
variadas (Win32 API) que fornece várias funcionalidades... Não sei se tem
uma específica para o que você quer... Lembro-me que quando precisei de uma
rotina para desligar o computador em VB6 eu tive que apelar para isso...
Não sei se há uma compatibilidade dos sistemas novos com estas APIs, mas de
qualquer forma você poderia fazer uma verificação de acordo com a versão do
sistema instalado...

Bem, sei que está bem incompleto, ams espero que ajude...

________________
Eldio Santos Junior
Tel.: (21) 8884-3757
Skype: eldiojr
Twitter: @eldius
Email/GTalk: eldio...@gmail.com


Em 18 de novembro de 2010 13:10, Leandro Quadros Durães Braga <
leandro...@gmail.com> escreveu:

Reply all
Reply to author
Forward
0 new messages