#!/usr/bin/env python
'''
Programme de suppression des fichiers residuels VNC

* Lister les fichiers /tmp/.X11-unix/Xnn
    Si aucun processus Xnvc ne tourne avec le no de session :nn, supprimer le fichier
    
* Lister les fichiers /tmp/.Xnn-lock
    Si aucun processus Xnvc ne tourne avec le no de session :nn, supprimer le fichier
    
'''

__docformat__ = 'restructuredtext en'
__author__ = "Jacques Hertzberg (jacques.hertzberg@univ-pau.fr)"
__version__ = "$Revision: 0.1 $"
__date__ = "$Date: 2010/06/14 11:00:00 $"

import glob
import os
import subprocess

def rmVNC():
    """."""
	pvnc = [str(e.lstrip(':').rstrip()) for e in subprocess.Popen("ps -ef | grep Xvnc | grep -v 'root\|grep' | awk '{print $9}'", shell=True, bufsize=1, stdout=subprocess.PIPE).stdout.readlines()]
	#f1 = subprocess.Popen("ls /tmp/.X11-unix/X*", shell=True, bufsize=1, stdout=subprocess.PIPE).stdout.readlines()
	f1 = glob.glob("/tmp/.X11-unix/X*")
	for i, d in enumerate(f1):
		if str(os.path.split(d)[1].lstrip('X').rstrip()) not in pvnc:
			if raw_input("suppression " + d.strip() + " (o/N) ? ") == 'o':
				os.remove(d.strip())
			
	#f2 = subprocess.Popen("ls /tmp/.X*-lock", shell=True, bufsize=1, stdout=subprocess.PIPE).stdout.readlines()
	f2 = glob.glob("/tmp/.X*-lock")
	for i, d in enumerate(f2):
		if str(d.lstrip('/tmp/.X').rstrip('-lock\n')) not in pvnc:
			if raw_input("suppression " + d.strip() + " (o/N) ? ") == 'o':
				os.remove(d.strip())

if __name__ == '__main__':
    import doctest
    doctest.testmod()
    rmVNC()