SecureCRT #Python Script

De la mano del #programador Lisandro Ubiedo les traigo un #script en Python que te permite conectarte a múltiples sesiones SSH en pestañas usando un archivo TXT como lista donde se indica el hostname de cada servidor uno por linea y debe estar almacenado en la BD de sesiones de SecureCRT, ejecutar varios comandos en los servidores remotos y ademas permite mediante un Dialog Pop-Up introducir tu correo corporativo para enviar correo desde el servidor, para por ejemplo validar que el SendMail de un servidor en especifico esta bien configurado, sin mas les comparto el código.

[code type=bash]
#$language = “Python”
#$interface = “1.0”
import os

# COMMANDS
commands = [ “date”, “grep DSmxout /etc/mail/sendmail.cf” ]
# SERVERS LIST
sessionsFileName = os.environ[‘USERPROFILE’]+”\Desktop\sessions.txt”

def Main():
errorMessages = “”

if not os.path.exists(sessionsFileName):
crt.Dialog.MessageBox(
“Session list file not found:\n\n” +
sessionsFileName + “\n\n” +
“Create a session list file as described in the description of ” +
“this script code and then run the script again.”)
return

sessionFile = open(sessionsFileName, “r”)
sessionsTabs = []

resp_mail = crt.Dialog.MessageBox(“Test mail troubleshooting?”,”Test mail”, 32 | 3)
if resp_mail == 6:
emails = crt.Dialog.Prompt(“Emails to send:”)
else:
emails = “”

i = 0
for line in sessionFile:
session = line.strip()
if session:
try:
# connect to the session/tab and wait for cursor
sessionsTabs.append(crt.Session.ConnectInTab(“/s \””+session+”\””))
if sessionsTabs[i].Session.Connected:
sessionsTabs[i].Screen.Synchronous = True
while True:
if not sessionsTabs[i].Screen.WaitForCursor(1):
break
except ScriptError:
error = crt.GetLastErrorMessage()
i+=1
sessionFile.close()

# send commands to connected sessions
for session in sessionsTabs:
#crt.Dialog.MessageBox(“Connecting to Session: ” + session)

row = session.Screen.CurrentRow
prompt = session.Screen.Get(row, 0, row, session.Screen.CurrentColumn – 1)
prompt = prompt.strip()

for cmd in commands:
session.Screen.Send(“%s\n” % cmd)
# Wait for the command to complete, by looking for the prompt to
# appear once again.
session.Screen.WaitForString(prompt)

try:
if emails != “”:
session.Screen.Send(“mailx -v -s \”Test mail – `hostname`\” %s < /dev/null\n\n” % emails)
session.Screen.WaitForString(prompt)
crt.Sleep(10)
except ScriptError:
pass

# pause the session
#session.Screen.Send(“\ncat -\n”)
session.Screen.Send(“bash”)
if errorMessages == “”:
crt.Dialog.MessageBox(“Tasks completed. No Errors were detected.”)
else:
crt.Dialog.MessageBox(“Tasks completed. The following errors occurred:\n” + errorMessages)

Main()
[/code]

Particularmente lo he usado sin problemas en la version de SecureCRT 7.3 sin fallas para mayor comodidad mi lista de sesiones de SecureCRT esta todo en la raíz de forma tal de no tener que colocar todo el path en el archivo TXT que sirve como la lista de servidores, espero les sirva. Un saludo. Nos vemos.

 


Leave a Comment