Petits exemples de code Python
Script pour éviter le delog automatique et afficher l'heure
Souvent les connexions à la console ssh ont un time-out d'inactivité très (trop) court.
Voici un petit programme python qui affiche l'heure au centre de l'écran et attends l'appuy sur une touche.
#!/bin/python3
import time
import sys
import select
import termios
import tty
import shutil
# Obtenir la taille du terminal
size = shutil.get_terminal_size()
cols = size.columns
rows = size.lines
# FORMAT
date_format="\u25C0 %Y-%m-%d %H:%M:%S \u25B6";
# Calcul de la chaine
ssize=len(time.strftime(date_format))
# Calculer la position centrale
center_x = (cols // 2)-(ssize//2)
center_y = rows // 2
# Sauvegarder les paramètres du terminal
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
tty.setcbreak(fd) # Mode caractère par caractère
print ("Sleep mode. Type any key to resume...")
print ("\033[?25l\033[s",end="") # on desactive l'affichage du "carret" du curseur et on sauve sa position
try:
print ("\033[?25l\033[s",end="")
while True:
if select.select([sys.stdin], [], [], 0)[0]: # Si une touche est pressée
break # on sort du 'while'
print(f"\033[{center_y};{center_x}H", end="")
now = time.time()
ts=time.localtime(now)
f=time.strftime("\033[103m\033[31m"+date_format+"\033[0m",ts)
print (f,end="",flush=True)
time.sleep(0.1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) # Restaurer terminal
print(f"\033[{center_y};{center_x}H"+" "*ssize, end="") # On se positionne au centre
print("\033[u\033[?25h", end="") # Restaurer position curseur et on affiche le carret
print("Sleep mode terminated")
Le script s'autoexplique. On utilise le module time el des codes ansi.