Installer un logiciel sous GNU/Linux Ubuntu

Traditionnellement pour installer un logiciel sous Ubuntu, il suffit de passer par la logithèque. Pour des paquets spéciaux comme des bibliothèques, il est préférable d'utiliser synaptic. Dans ces deux derniers cas, les paquets sont téléchargés à partir de dépôts officiels sécurisés.

Les paquets logiciels se terminent tous par l'extension “deb” (pour debian)

Installer le paquet de "magrétisation"

Le paquet de “magrétisation” est ici : http://sourceforge.net/projects/sadms/files/magret/

Choisir la dernière version. Vous trouverez trois fichiers :

  • magret-0.1.1.tar.gz : ce sont les sources
  • magret-pkg-deb-0.1.1.tar.gz : ce sont les sources et le paquet prêt à être installé
  • magret-install-deb-0.1.1.tar.gz : c'est le paquet prêt à être installé

Il suffit de décompresser une des deux dernières archives ci-dessus et d'installer le fichier *.deb

Pour l'installer deux possibilités :

  • pour les amis des souris : clic-droit sur le fichier et choisissez “ouvrir avec Logithèque”
  • pour les amateurs de la ligne de commande :
    sudo dpkg -i chemin_vers/le_nom_du_fichier.deb

Que fait ce paquet ?

  • gestion des logs de connexion/déconnexion
  • montage automatique sur le Bureau d'un lien pointant vers le répertoire de travail de l'utilisateur (P:)
  • nettoyage du /home à la déconnexion

Il reste des choses à faire mais le fondamental est là.

La feuille de route est accessible ici : http://linuxedu.ac-toulouse.fr/doku.php?id=projet:sadms:magretisation#a_faire]

Code source et contribuer développement

N’hésitez pas à regarder les sources du paquet magret.deb. C'est en fait un ensemble de script python et shell. Toute aide est la bienvenue, contactez-nous sur la liste linuxedu pour toute question, demande d’amélioration ou si vous souhaitez vous-mêmes proposer une amélioration concrète au code.

Script de gestion des logs de connexion/déconnexion

Le code du script principal est ici, du grand python très bien codé, merci Bernard !

#!/usr/bin/python
# Bernard Bou <bbou AROBASE ac TIRET toulouse POINT fr>
# 23/02/2011 20:41:53
# 24/02/2011 16:53:07 
 
import fcntl, socket, array, struct
import datetime, os, sys
 
srvaddr = "serveur01";
srvport = 8091;
 
SIOCGIFHWADDR = 0x8927
SIOCGIFCONF = 0x8912
 
def getHwAddr(s, ifName):
	"""
	get mac from socket and iface name
	"""
	try:
		data=fcntl.ioctl(s.fileno(), SIOCGIFHWADDR,struct.pack('256s', ifName[:15]) )
		return ''.join(['%02x-'%ord(b) for b in data[18:24]])[:-1]
	except Exception as e:
		print("getHwAddr %s" % e)
		raise e
 
def getUpIfaces(s):
	"""
	get ifacename-ip list
	"""
	try:
		maxIfs=32
		lenIfReq=32 # length of struct ifreq
		lenBuf=lenIfReq * maxIfs
		buf=array.array('B', '\0' * lenBuf)
		data=fcntl.ioctl(s.fileno(),SIOCGIFCONF,struct.pack('iP',lenBuf, buf.buffer_info()[0]))
		outbytes=struct.unpack('iL',data)[0]
		bufstr=buf.tostring()
		return [(bufstr[i:i+32].split('\0', 1)[0],socket.inet_ntoa(bufstr[i+20:i+24])) for i in range(0, outbytes, 32)]
	except Exception as e:
		print ("getUpIfaces %s" % e)
		raise e
 
def getUpIfacesMap(s):
	"""
	get ip-to-ifacename dictionary
	"""
	iFaceMap={}
	try:
		for ifName,ifIp in getUpIfaces(s):
			#if not ifName.startswith('lo'):
				try:
					iFaceMap[ifIp]=ifName
				except Exception as e:
					print(e)
					pass
	except Exception as e:
		print ("getUpIfacesMap %s" % e)
		raise e
	return iFaceMap
 
def main(out):
	"""
	main
		out (boolean):  whether to log out or log in
	"""
	# direction
	print("logging out=%s" % out)
	tag="login"
	if out:
		tag="logout"
 
	# collect data
	now=datetime.datetime.now().strftime("%d%m%y:%H%M%S")
	print("date:time=%s" % now)
	#user=os.getlogin()
	user=os.environ.get('USER')
	print("user=%s" % user)
	host=socket.gethostname()
	print("host=%s" % host)
 
	# create socket
	s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM);
	try:
		# connect socket
		s.connect((srvaddr,srvport));
 
		# retrieve socket ip
		mysockname=s.getsockname();
		myip=mysockname[0];
 
		# 	build interface map
		print("ip=%s (port=%d)" % mysockname)
		myiface=getUpIfacesMap(s)[myip]
 
		# map ip to name
		print("iface=%s" % myiface)
 
		# retrieve mac from name
		mymac=getHwAddr(s,myiface)
		print("mac=%s" % mymac)
 
		# assemble data
		txdata="LOGUSR:%s:%s:%s:%s:%s:%s" %	(host,user,now,myip,mymac,tag);
		print(txdata)
 
		# send data
		s.send(txdata);
 
	except Exception as e:
		print("ERROR !!! %s" % e)
		raise(e)
	finally:
		# close and free resources
		s.close();
 
"""
main
"""
out=False
for arg in sys.argv:
	if arg == "-out":
		out=True
main(out)

Script de montage automatique de P: et nettoyage du /home

#!/bin/bash
# Bernard Bou <bbou AT ac TIRET toulouse POINT fr>
# 25/02/2011 16:55:33 
 
netmountpoint=$HOME/.cifsmount
name="Travail"
 
# default desktop name
desktop="$HOME/Desktop"
# include user dir names
. ~/.config/user-dirs.dirs
# get value as per XDG_DESKTOP_DIR
if [ ! -z "$XDG_DESKTOP_DIR" ]; then 
	desktop=$XDG_DESKTOP_DIR
fi
echo "using ${desktop} as desktop"
 
# make symlink
if [ -d ${netmountpoint} ];then
	[ -L ${desktop}/${name} ] || ln -s ${netmountpoint} ${desktop}/${name}
	echo "linking ${desktop}/${name} to mountpoint ${netmountpoint}"
else
	echo "mountpoint ${netmountpoint} does not exist"
	exit 1
fi
 
projet/accueil/installer_application_magret.txt · Dernière modification: 2014/10/23 08:30 (modification externe)
 
Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : GNU Free Documentation License 1.3
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki