De tanto @eduardomacan e @ale_borba reclamarem dos meus posts repetitivos no twitter, aqui segue então mais uma dica com Python pra dar um refresco na repetitividade.

Tenho algumas máquina velhas na empresa, umas Sun Ultra 10, que uso pra compilar e testar código.  Uma com Solaris 10 e outra com o 9 (ambas fazendo jus ao nome Slowlaris).  Elas tinham IP fixo e ficavam num ambiente de laboratório, mas recentemente resolveram tentar *cobrar* o espaço físico e a energia elétrica, além da "administração do sistema".   Resolvi então pegar ambas e as colocar próximas de mim, no ambiente de escritório.

O maior problema disso é que o ambiente disponibiliza IP somente por DHCP.  Então como resolver a questão de saber qual o IP da máquina para fazer conexão via SSH, uma vez que o mesmo pode mudar a cada novo boot (e realmente muda por aqui)?

Como sempre, Python veio para salvar o dia.  Uso o programa abaixo para enviar por mail qual o IP do servidor.  É feito para Solaris, por isso algumas definições são específicas, como o uso da interface "hme0" e a localização do comando "ifconfig".  Mas tudo pode ser adaptado facilmente para outra plataforma.


#! /usr/bin/python

import smtplib
from os import popen
from string import split
from re import search, sub
from socket import gethostname
from time import ctime

interface = "hme0"
ifconfig = "/usr/sbin/ifconfig"
mailserver = "mail.internal.domain.com"

def SendMail(rcpts, ip):
	fromaddr = "This email address is being protected from spambots. You need JavaScript enabled to view it."
	subject = "== Location update: %s (%s) == " % (ip, gethostname())
	msg = "From: %s\nTo: " % fromaddr
	for n in rcpts:
		msg = msg + n + ","
	msg = msg[:-1] + "\nSubject: %s" % subject
	msg = msg + """

Location update from host %s: %s

%s
-- Powered by Python --
""" % (gethostname(), ip, ctime())
	mail = smtplib.SMTP(mailserver)
	#mail.set_debuglevel(1)
	print "Sending:", msg
	mail.sendmail(fromaddr, rcpts, msg)
	mail.quit()
	
def GetIP():
	for line in popen(ifconfig + " " + interface).readlines():
		#print line
		if search("inet", line):
			line = line[:-1]
			line = sub(".*inet ", "", line)
			line = sub(" .*", "", line)
			
			return line
			
		
	
def Main():
	ip = GetIP()
	rcpts = [ "This email address is being protected from spambots. You need JavaScript enabled to view it.",
		"This email address is being protected from spambots. You need JavaScript enabled to view it.",
		"This email address is being protected from spambots. You need JavaScript enabled to view it."
		]
	SendMail(rcpts, ip)

if __name__ == '__main__':
	Main()

Em seguida apenas adicionei o mesmo dentro do "/etc/init.d" e fiz o link em "/etc/rc3.d".

We use cookies

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.