user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 19-11-2014 22:45:50

WarLocG
#! modo de compet

[Fork] archey 0.2.8 modifié par mes soins [version 6]

Edit: 06-02-2015: Après mon passage à la version 1.1.0 de Kali Linux, quelques éléments pythons n'étant plus correctement reconnu et Kali possédant son propre nom dans lsb_release j'ai mis à jour cette version de archey.

Les modifications sont les suivantes:

  - corrections d'un bug survenant avec des valeurs décimales lors du calcul de l'espace disque
  - modification du logo de debian, utilisant les couleurs mauves au lieu du rouge (une capture sera suivie)
  - remplacement des print corrigeant un bug expérimenté lors de la capture d'écran depuis python 3.4.2 sur archlinux
  - rajout de decode('Utf-8') sur chaque Popen afin de corriger un autre bug survenant sur archlinux et python 3+
  - nettoyage de quelques élements touchant a DetectDistro et rajout de Kali + prise en compte des remarques de coyotus sur platform

19-02-2015: ChangeLog - Version 6:
  - Remplacement de la plupart des Popen par des subprocess.check_output et platform.linux_distribution()
  - nettoyage de quelques partie du code un peu partout afin de réduire le code
  - adaptation des process car mon WindowManager (Fluxbox) n'apparaissait plus
  - légères modification de l'ASCII-Art du dragon de Kali
  - experimental : ajout de l'affichage des interfaces réseaux (pas encore les IP mais le status up / down / unknown en couleur)

#!/usr/bin/env python
#
# Archey [version 0.2.8]
# modification by WarLocG [version 6]
#
# Archey is a system information tool written in Python.
#
# Maintained by Melik Manukyan <melik@archlinux.us>
# ASCII art by Brett Bohnenkamper <kittykatt@silverirc.com>
# Changes Jerome Launay <jerome@projet-libre.org>
# Fedora support by YeOK <yeok@henpen.org>

# Distributed under the terms of the GNU General Public License v3.
# See http://www.gnu.org/licenses/gpl.txt for the full license text.

# Import libraries
import platform, os, sys, subprocess, optparse, re, linecache
from subprocess import check_output
from optparse import OptionParser
from time import ctime, sleep

# Display [Comment/Uncomment to Enable/Disable information.]
display = [
 'user', # Display Username
 'hostname', # Display Machine Hostname
 'distro', # Display Distribution
 'kernel',  # Display Kernel Version
 'uptime',  # Display System Uptime
 'wm',  # Display Window Manager
 'de', # Display Desktop Environment
 'sh', # Display Current Shell
 'term', # Display Current Terminal
 'packages', # Display Number of Packages Installed
 'cpu', # Display CPU Model
 'ram', # Display RAM Usage
 'disk', # Display Disk Usage
 'network' # Add by WarLocG -experimental-
 ]

# Array containing Values
result = []

# Options
if __name__=='__main__':
 parser = OptionParser(usage='%prog [-s, --screenshot]', description='Archey is a system information tool written in Python.', version="%prog 0.2.8 fork 4")
 parser.add_option('-s', '--screenshot',
  action='store_true', dest='screenshot', help='take a screenshot')
 (options, args) = parser.parse_args()

# Define processes for identifying Desktop Environmentss, Window Managers, Shells.
de_dict = {
 'gnome-session': 'GNOME',
 'ksmserver': 'KDE',
 'xfce4-session': 'Xfce'}
           
wm_dict = {
 'awesome': 'Awesome',
 'beryl': 'Beryl',
 'blackbox': 'Blackbox',
 'compiz': 'Compiz',
 'dwm': 'DWM',
 'enlightenment': 'Enlightenment',
 'fluxbox': 'Fluxbox',
 'fvwm': 'FVWM',
 'i3': 'i3',
 'icewm': 'IceWM',
 'kwin': 'KWin',
 'metacity': 'Metacity',
 'musca': 'Musca',
 'openbox': 'Openbox',
 'pekwm': 'PekWM',
 'ratpoison': 'ratpoison',
 'scrotwm': 'ScrotWM',
 'wmaker': 'Window Maker',
 'wmfs': 'Wmfs',
 'wmii': 'wmii',
 'xfwm4': 'Xfwm',
 'xmonad': 'xmonad'}

sh_dict = {
 'zsh': 'Zsh',
 'bash': 'Bash',
 'dash': 'Dash',
 'fish': 'Fish',
 'ksh': 'Ksh',
 'csh': 'Csh',
 'jsh': 'Jsh',
 'tcsh': 'Tcsh'}

# Define Colour Scheme

clear = '\x1b[0m'
blackB = '\x1b[0;30m'
blackB = '\x1b[1;30m'
redN = '\x1b[0;31m'
redB = '\x1b[1;31m'
greenN = '\x1b[0;32m'
greenB = '\x1b[1;32m'
yellowN = '\x1b[0;33m'
yellowB = '\x1b[1;33m'
blueN = '\x1b[0;34m'
blueB = '\x1b[1;34m'
magentaN = '\x1b[0;35m'
magentaB = '\x1b[1;35m'
cyanN = '\x1b[0;36m'
cyanB = '\x1b[1;36m'
whiteN = '\x1b[0;37m'
whiteB = '\x1b[1;37m'

# Find running processes.
def xmonadfix(str):
 if re.compile("xmonad").match(str): return "xmonad"
 return str
p1 = check_output("ps -u "+os.getenv("USER"),shell=True).decode('Utf-8').split('\n')
processes = map(xmonadfix, [process.split()[3] for process in p1 if process])
p1 = None

# Find Distro.
DetectDistro = platform.linux_distribution()[0]

# Print coloured key with normal value.
def output(key, value):
 global distro
 distro = ''
 if DetectDistro == 'Ubuntu':
  distro ='%s%s:%s %s' % (redB, key, clear, value)
 if DetectDistro == 'Arch':
  distro = '%s%s:%s %s' % (blueB, key, clear, value)
 if DetectDistro == 'Debian':
  distro = '%s%s:%s %s' % (magentaB, key, clear, value)
 if DetectDistro == 'Kali':
  distro = '%s%s:%s %s' % (blueB, key, clear, value)
 if DetectDistro == 'Fedora':
  distro = '%s%s:%s %s' % (blueN, key, clear, value)
 if DetectDistro == 'CrunchBang':
  distro = '%s%s:%s %s' % (whiteN, key, clear, value)
 if DetectDistro == 'LinuxMint':
  distro = '%s%s:%s %s' % (greenB, key, clear, value) 
 result.append(distro)

# RAM Function.
def ram_display():
 raminfo = check_output("free -m",shell=True).decode('Utf-8').split('\n')
 ram = ''.join(filter(re.compile('M').search, raminfo)).split()
 used = int(ram[2]) - int(ram[5]) - int(ram[6])
 usedpercent = ((float(used) / float(ram[1])) * 100)
 if usedpercent <= 33:
  ramdisplay = '%s%s MB %s/ %s MB' % (greenB, used, clear, ram[1])
  output('RAM', ramdisplay)
 if usedpercent > 33 and usedpercent < 67:
  ramdisplay = '%s%s MB %s/ %s MB' % (yellowB, used, clear, ram[1])
  output('RAM', ramdisplay)
 if usedpercent >= 67:
  ramdisplay = '%s%s MB %s/ %s MB' % (redB, used, clear, ram[1])
  output('RAM', ramdisplay)
  
# Screenshot Function.
screen = '%s' % options.screenshot
def screenshot():
 print ('Taking shot in'),
 list = range(1,6)
 list.reverse()
 for x in list:
   print ('%s..' % x),
   sys.stdout.flush()
   sleep(1)
 print ('Say Cheeze!')
 subprocess.check_call(['scrot'])

# Operating System Function.
def distro_display(): 
 global distro
 arch = platform.machine()
 release = platform.linux_distribution()[1]
 codename = platform.linux_distribution()[2]
 if DetectDistro in ('Debian', 'Ubuntu', 'Fedora', 'CrunchBang', 'LinuxMint'):
  distro = '%s %s %s (%s)' % (DetectDistro, release, arch, codename)
 if DetectDistro in ('Kali','Arch'):
  distro =  '%s Linux %s %s (%s)' % (DetectDistro, release, arch, codename)
 output('OS', distro)

# Kernel Function.
def kernel_display():
 kernel = platform.release()
 output ('Kernel', kernel)

def user_display():
 username= os.getenv('USER')
 output ('User', username)

# Hostname Function.
def hostname_display():
 hostname = platform.node()
 output('Hostname', hostname)

# CPU Function.
def cpu_display():
 file = open('/proc/cpuinfo').readlines()
 cpuinfo = re.sub('  +', ' ', file[4].replace('model name\t: ', '').rstrip('\n'))
 output ('CPU', cpuinfo) 

# Uptime Function.
def uptime_display():
 fuptime = int(open('/proc/uptime').read().split('.')[0])
 day = int(fuptime / 86400)
 fuptime = fuptime % 86400
 hour = int(fuptime / 3600)
 fuptime = fuptime % 3600
 minute = int(fuptime / 60)
 uptime = ''
 if day == 1:
  uptime += '%d day, ' % day
 if day > 1:
  uptime += '%d days, ' % day
 uptime += '%d:%02d' % (hour, minute)
 output('Uptime', uptime)

# Desktop Environment Function.
def de_display():
 for key in de_dict.keys():
  if key in processes:
   de = de_dict[key]
   output ('Desktop Environment', de)

# Window Manager Function.
def wm_display():
 for key in wm_dict.keys():
  if key in processes:
   wm = wm_dict[key]
   output ('Window Manager', wm)

# Shell Function.
def sh_display():
 sh = os.getenv("SHELL").split('/')[-1].capitalize()
 output ('Shell', sh)

# Terminal Function.
def term_display():
 term = os.getenv("TERM").split('/')[-1].capitalize()
 output ('Terminal', term)

# Packages Function.
def packages_display():
 if DetectDistro in ('Ubuntu','Debian','Kali','CrunchBang','LinuxMint'):
  packages = check_output("dpkg --get-selections | grep -v deinstall | wc -l",shell=True).decode('Utf-8').rstrip('\n')
 if DetectDistro == 'Arch':
  packages = check_output("pacman -Q | wc -l",shell=True).decode('Utf-8').rstrip('\n')
 if DetectDistro == 'Fedora':
  packages = check_output("rpm -qa | wc -l",shell=True).decode('Utf-8').rstrip('\n')
 output ('Packages',packages)

# Disk Function.
def disk_display():
 p1 = check_output("df -Tlh --total -t ext4 -t ext3 -t ext2 -t reiserfs -t jfs -t ntfs -t fat32 -t btrfs -t fuseblk", shell=True).decode('Utf-8')
 total = p1.splitlines()[-1]
 used = total.split()[3].replace(',','.')
 size = total.split()[2].replace(',','.')
 usedpercent = float(re.sub("[A-Z]", "", used)) / float(re.sub("[A-Z]", "", size)) * 100
 if usedpercent <= 33:
  fs = '%s%s %s/ %s' % (greenB, used, clear, size)  
  output ('Disk', fs) 
 if usedpercent > 33 and usedpercent < 67:
  fs = '%s%s %s/ %s' % (yellowB, used, clear, size)  
  output ('Disk', fs) 
 if usedpercent >= 67:
  fs = '%s%s %s/ %s' % (redB, used, clear, size)  
  output ('Disk', fs)

#Prototype by WarLocG
def network_display():
 iface = check_output("ip addr | grep ': ' | awk '{print $2 $9}'",shell=True).decode('Utf-8').split('\n')
 for line in range(len(iface)-1):
  net=iface[line].split(':')
  status=net[1].lower()
  if status == "up":
    status = '%s%s%s' % (greenB,"up",clear)
  if status == "down":
    status = '%s%s%s' % (redB,"down",clear)
  output(net[0],status)
	  
 
# Run functions found in 'display' array.
for x in display:
 funcname=x+'_display'
 func=locals()[funcname]
 func()

# Array containing values.
result.extend(['']*(20 - len(display)))

# Result.
if DetectDistro == 'Ubuntu':
 print ("""
%s                          .oyhhs:   %s
%s                 ..--.., %sshhhhhh-   %s
%s               -+++++++++`:%syyhhyo`  %s
%s          .--  %s-++++++++/-.-%s::-`    %s
%s        .::::-   %s:-----:/+++/++/.   %s
%s       -:::::-.          %s.:++++++:  %s
%s  ,,, %s.:::::-`             %s.++++++- %s
%s./+++/-%s`-::-                %s./////: %s
%s+++++++ %s.::-                        %s
%s./+++/-`%s-::-                %s:yyyyyo %s
%s  ``` `%s-::::-`             %s:yhhhhh: %s
%s       -:::::-.         %s`-ohhhhhh+  %s
%s        .::::-` %s-o+///+oyhhyyyhy:   %s
%s         `.--  %s/yhhhhhhhy+%s,....     %s
%s               /hhhhhhhhh%s-.-:::;    %s
%s               `.:://::- %s-:::::;    %s
%s                         `.-:-'     %s
%s                                    %s
%s""" % ( redN, result[0], redB, redN, result[1], redB, redN, result[2], yellowB, redB, redN, result[3], yellowB, redB, result[4], yellowB, redB, result[5], redB, yellowB, redB, result[6], redB, yellowB, redB, result[7], redB, yellowB, result[8], redB, yellowB, redN, result[9], redB, yellowB, redN, result[10], yellowB, redN, result[11], yellowB, redN, result[12], yellowB, redN, yellowB, result[13], redN, yellowB, result[14], redN, yellowB, result[15], yellowB, result[16], yellowB, result[17], clear ))

if DetectDistro == 'Arch':
 print ("""%s
%s               +                %s
%s               #                %s
%s              ###               %s
%s             #####              %s
%s             ######             %s
%s            ; #####;            %s
%s           +##.#####            %s
%s          +##########           %s
%s         ######%s#####%s##;         %s
%s        ###%s############%s+        %s
%s       #%s######   #######        %s
%s     .######;     ;###;`\".      %s
%s    .#######;     ;#####.       %s
%s    #########.   .########`     %s
%s   ######'           '######    %s
%s  ;####                 ####;   %s
%s  ##'                     '##  %s 
%s #'                         `#  %s%s """ % (blueB, blueB, result[0], blueB, result[1], blueB, result[2], blueB, result[3], blueB, result[4], blueB, result[5], blueB, result[6], blueB, result[7], blueB, blueN, blueB, result[8], blueB, blueN, blueB, result[9], blueB, blueN, result[10], blueN, result[11], blueN, result[12], blueN, result[13], blueN, result[14], blueN, result[15], blueN, result[16], blueN, result[17], clear))

if DetectDistro == 'Debian':
 print ("""%s
%s                                  %s
%s          _sudZUZ#Z#XZo=_         %s
%s       _jmZZ2!!~---~!!X##wx       %s
%s    .<wdP~~            -!YZL,     %s
%s   .mX2'       _xaaa__     XZ[.   %s
%s   oZ[      _jdXY!~?S#wa   ]Xb;   %s
%s  _#e'     .]X2(     ~Xw|  )XXc   %s
%s .2Z`      ]X[.       xY|  ]oZ(   %s
%s .2#;      )3k;     _s!~   jXf`   %s
%s  1Z>      -]Xb/    ~    __#2(    %s
%s  -Zo;       +!4ZwerfgnZZXY'      %s
%s   *#[,        ~-?!!!!!!-~        %s
%s    XUb;.                         %s
%s     )YXL,,                       %s
%s       +3#bc,                     %s
%s         -)SSL,,                  %s
%s            ~~~~~                 %s
%s                                  %s
%s """ % (magentaB, magentaB, result[0], magentaB, result[1], magentaB, result[2], magentaB, result[3], magentaB, result[4], magentaB, result[5], magentaB, result[6], magentaB, result[7], magentaB, result[8], magentaN, result[9], magentaN, result[10], magentaN, result[11], magentaN, result[12], magentaN, result[13], magentaN, result[14], magentaN, result[15], magentaN, result[16], magentaN, result[17], clear))

if DetectDistro == 'Fedora':
 print ("""
%s           :/------------://        %s
%s        :------------------://      %s
%s      :-----------%s/shhdhyo/%s-://     %s
%s    /-----------%somMMMNNNMMMd/%s-:/    %s
%s   :-----------%ssMMMdo:/%s       -:/   %s
%s  :-----------%s:MMMd%s-------    --:/  %s
%s  /-----------%s:MMMy%s-------    ---/  %s
%s :------    --%s/+MMMh/%s--        ---: %s 
%s :---     %soNMMMMMMMMMNho%s     -----: %s
%s :--      %s+shhhMMMmhhy++%s   ------:  %s
%s :-      -----%s:MMMy%s--------------/  %s
%s :-     ------%s/MMMy%s-------------:   %s
%s :-      ----%s/hMMM+%s------------:    %s
%s :--%s:dMMNdhhdNMMNo%s-----------:      %s
%s :---%s:sdNMMMMNds:%s----------:        %s
%s :------%s:://:%s-----------://         %s
%s :--------------------://           %s
%s                                    %s
%s """ % ( blueN, result[0], blueN, result[1], blueN, whiteB, blueN, result[2], blueN, whiteB, blueN, result[3], blueN, whiteB, blueN, result[4], blueN, whiteB, blueN, result[5], blueN, whiteB, blueN, result[6], blueN, whiteB, blueN, result[7], blueN, whiteB, blueN, result[8], blueN, whiteB, blueN, result[9], blueN, whiteB, blueN, result[10], blueN, whiteB, blueN, result[11], blueN, whiteB, blueN, result[12], blueN, whiteB, blueN, result[13], blueN, whiteB, blueN, result[14], blueN, whiteB, blueN, result[15], blueN, result[16], blueN, result[17], clear ))

if DetectDistro == 'CrunchBang':
 print ("""                               
%s                ___       ___      _  %s
%s               /  /      /  /     | | %s
%s              /  /      /  /      | | %s
%s             /  /      /  /       | | %s
%s     _______/  /______/  /______  | | %s
%s    /______   _______   _______/  | | %s
%s          /  /      /  /          | | %s
%s         /  /      /  /           | | %s
%s        /  /      /  /            | | %s
%s ______/  /______/  /______       | | %s
%s/_____   _______   _______/       | | %s
%s     /  /      /  /               | | %s
%s    /  /      /  /                |_| %s
%s   /  /      /  /                  _  %s
%s  /  /      /  /                  | | %s 
%s /__/      /__/                   |_| %s
%s                                      %s
%s                                      %s
%s""" % ( whiteN, result[0], whiteN, result[1], whiteN, result[2], whiteN, result[3], whiteN, result[4], whiteN, result[5], whiteN, result[6], whiteN, result[7], whiteN, result[8], whiteN, result[9], whiteN, result[10], whiteN, result[11], whiteN, result[12], whiteN, result[13], whiteN, result[14], whiteN, result[15], whiteN, result[16], whiteN, result[17], clear ))

if DetectDistro == 'LinuxMint':
 print ("""%s                                     %s
%s MMMMMMMMMMMMMMMMMMMMMMMMMmds+.      %s
%s MMm----::-://////////////oymNMd+`   %s
%s MMd      %s/++                %s-sNMd:  %s
%s MMNso/`  %sdMM    `.::-. .-::.` %s.hMN: %s
%s ddddMMh  %sdMM   :hNMNMNhNMNMNh: `%sNMm %s
%s     NMm  %sdMM  .NMN/-+MMM+-/NMN` %sdMM %s
%s     NMm  %sdMM  -MMm  `MMM   dMM. %sdMM %s
%s     NMm  %sdMM  -MMm  `MMM   dMM. %sdMM %s
%s     NMm  %sdMM  .mmd  `mmm   yMM. %sdMM %s
%s     NMm  %sdMM`  ..`   ...   ydm. %sdMM %s
%s     hMM-  %s+MMd/-------...-:sdds %sMMM %s
%s     -NMm-  %s:hNMNNNmdddddddddy/` %sdMM %s
%s      -dMNs-``%s-::::-------.``    %sdMM %s
%s       `/dMNmy+/:-------------:/yMMM %s
%s          ./ydNMMMMMMMMMMMMMMMMMMMMM %s
%s                                     %s
%s                                     %s
%s""" % ( whiteB, result[0], whiteB, result[1], whiteB, result[2], whiteB, greenB, whiteB, result[3], whiteB, greenB, whiteB, result[4], whiteB, greenB, whiteB, result[5], whiteB, greenB, whiteB, result[6], whiteB, greenB, whiteB, result[7], whiteB, greenB, whiteB, result[8], whiteB, greenB, whiteB, result[9], whiteB, greenB, whiteB, result[10], whiteB, greenB, whiteB, result[11], whiteB, greenB, whiteB, result[12], whiteB, greenB, whiteB, result[13], whiteB, result[14], whiteB, result[15], whiteB, result[16], whiteB, result[17], clear ))

if DetectDistro == 'Kali':
 print ("""
%s "?$$Qgc                       %s 
%s==saawmQ                       %s 
%s   ,g49Qc                      %s
%s,aggQDVQL    -_                %s
%sT"     =Qc    "hw,             %s
%s        $WQQQga_-4a            %s
%s      _wQ@????$QQy7hc          %s
%s      yQF      "?$QQW(         %s
%s     ]Qf          "4Q%s=         %s
%s     jQ'           -QQQ        %s
%s     QQ              "$Qa      %s
%s     QQ                ?`      %s
%s     4Qc                       %s
%s      QQa                      %s
%s      "4Qmaa~___               %s
%s        "4QWQQQQQQQwc,         %s
%s              -""?$QB$m,       %s
%s                   "$w"9m      %s
%s                     4w "Hc    %s
%s                      3L  4,   %s
%s                       4c  $   %s
%s                        $, !   %s
%s                        ]      %s
%s
%s""" % (blueN, clear, blueN, clear, blueN, clear, blueN, result[0], blueN, result[1], blueN, result[2], blueN, result[3], blueN, result[4], blueN, redN, result[5], blueN, result[6], blueN, result[7], blueN, result[8], blueN, result[9], blueN, result[10], blueN, result[11], blueN, result[12], blueN, result[13], blueN, result[14], blueN, result[15], blueN, result[16], blueN, result[17], blueN, clear, blueN, clear, 'The quieter you become, the more you are able to hear', clear))




if screen == 'True':
 screenshot()

Une petite capture du resultat pour debian ici (ici avec la palette Xterm):
1416429901.png

Apercu du archey sous Kali:
1423232247.png

Nouvel apercu depuis la release 6:
1424361011.png


Avant de poser vos questions, jeter un oeil ici
Mon CodeVault et Wiki : ici
Les messages privés envers le staff sont uniquement pour les cas d'urgence ou affaires privées (personnelles). Les demandes se feront exclusivement sur le forum. Merci de respecter cette clause sous peine de sanctions.

Hors ligne

#2 02-12-2014 12:38:11

IceF0x
#! Gourou Linux

Re : [Fork] archey 0.2.8 modifié par mes soins [version 6]

Comme discuté sur IRC on peut facilement remplacer popen par platform

Ainsi le bout de code suivant:

arch = Popen(['uname', '-m'], stdout=PIPE).communicate()[0].decode('Utf-8').rstrip('\n')

donnerais ceci

arch = platform.machine()

Et

kernel = Popen(['uname', '-r'], stdout=PIPE).communicate()[0].decode('Utf-8').rstrip('\n')

par

kernel = platform.release()

Ma version:

#!/usr/bin/env python2
#
# archey [version 0.1-11]
#
# Maintained by Melik Manukyan <melik@archlinux.us>
# Distributed under the terms of the GNU General Public License v3.
# See http://www.gnu.org/licenses/gpl.txt for the full license text.
# Modified for ArchBang -sHyLoCk
# System information tool for Archlinux written in python.

# Import libraries
import os, sys, subprocess, optparse, re, platform
from subprocess import Popen, PIPE
from optparse import OptionParser
from getpass import getuser
from time import ctime, sleep

# Display [Comment/Uncomment to Enable/Disable information.]
display = [
 'os', # Display Operating System
 'hostname', # Display Machine Hostname
 'kernel',  # Display Kernel Version
# 'battery', # Display Battery Usage [Requires 'acpi']
 'uptime',  # Display System Uptime
 'wm',  # Display Window Manager
 'de', # Display Desktop Environment
 'packages', # Display Number of Packages Installed
 'ram', # Display RAM Usage
 'cpu', # Display CPU Model
 'sh', # Display Current Shell
# 'fs:/boot', # Display /boot Partition Usage
# 'fs:/home', # Display /home Partition Usage
# 'fs:/MOUNT/POINT', # Display * Partition, Edit To Your Needs
 'fs:/' # Display / Partition Usage
 ]
# Array containing Values
result = []

# Options
if __name__=='__main__':
 parser = OptionParser(usage='%prog [-c COLOR] [-s, --screenshot]', description='To customize the info displayed on archey, edit "/usr/bin/archey" directly and look for the display array. Note: Archey can only allow up to 15 fields.', version="%prog 0.1.11")
 parser.add_option('-c',
  action='store', default='blue', type='choice', dest='color', choices=('black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'), help='choose a color: black, red, green, yellow, blue, magenta, cyan, white [Default: blue]')
 parser.add_option('-s', '--screenshot',
  action='store_true', dest='screenshot', help='take a screenshot')
 (options, args) = parser.parse_args()

# Define colors
colorscheme = '%s' % options.color
colors = {'black': '0', 'red': '1', 'green': '2', 'yellow': '3', 'blue': '4', 'magenta': '5', 'cyan': '6', 'white': '7'}
for key in colors.keys():
 if key in colorscheme: colorcode = colors[key]    
color = '\x1b[1;3%sm' % colorcode
color2 = '\x1b[0;3%sm' % colorcode
clear = '\x1b[0m'

# Define processes for identifying Desktop Environmentss, Window Managers, Shells.
de_dict = {
 'gnome-session': 'GNOME',
 'ksmserver': 'KDE',
 'xfconfd': 'Xfce'}
           
wm_dict = {
 'awesome': 'Awesome',
 'beryl': 'Beryl',
 'blackbox': 'Blackbox',
 'compiz': 'Compiz',
 'dwm': 'DWM',
 'enlightenment': 'Enlightenment',
 'fluxbox': 'Fluxbox',
 'fvwm': 'FVWM',
 'icewm': 'IceWM',
 'kwin': 'KWin',
 'metacity': 'Metacity',
 'musca': 'Musca',
 'openbox': 'Openbox',
 'pekwm': 'PekWM',
 'ratpoison': 'ratpoison',
 'scrotwm': 'ScrotWM',
 'wmaker': 'Window Maker',
 'wmii': 'wmii',
 'xfwm4': 'Xfwm',
 'xmonad': 'xmonad'}

sh_dict = {
 'zsh': 'Zsh',
 'bash': 'Bash',
 'dash': 'Dash',
 'fish': 'Fish',
 'ksh': 'Ksh',
 'csh': 'Csh',
 'jsh': 'Jsh',
 'tcsh': 'Tcsh'}

# Find running processes.
def xmonadfix(str):
 if re.compile("xmonad").match(str): return "xmonad"
 return str
p1 = Popen(['ps', '-u', getuser()], stdout=PIPE).communicate()[0].split('\n')
processes = map(xmonadfix, [process.split()[3] for process in p1 if process])
p1 = None

# Print coloured key with normal value.
def output(key, value):
 output = '%s%s:%s %s' % (color, key, clear, value)
 result.append(output)

# RAM Function
def ram_display():
 raminfo = Popen(['free', '-m'], stdout=PIPE).communicate()[0].split('\n')
 ram = ''.join(filter(re.compile('M').search, raminfo)).split()
 output ('RAM', '%s MB / %s MB' % (ram[2], ram[1]))

# Screenshot Function 
screen = '%s' % options.screenshot
def screenshot():
 print ('Taking shot in'),
 list = range(1,6)
 list.reverse()
 for x in list:
   print ('%s..') % x,
   sys.stdout.flush()
   sleep(1)
 print ('Say Cheeze!')
 subprocess.check_call(['scrot'])

# Operating System Function
def os_display(): 
 arch = platform.machine()
 os = 'ArchBang - %s' % (arch)
 output('OS', os)

# Kernel Function
def kernel_display():
 kernel = platform.release()
 output ('Kernel', kernel)

# Hostname Function
def hostname_display():
 hostname = platform.node()
 output ('Hostname', hostname)

# CPU Function
def cpu_display():
 file = open('/proc/cpuinfo').readlines()
 cpuinfo = re.sub('  +', ' ', file[4].replace('model name\t: ', '').rstrip('\n'))
 output ('CPU', cpuinfo) 

# Uptime Function
def uptime_display():
 fuptime = int(open('/proc/uptime').read().split('.')[0])
 day = int(fuptime / 86400)
 fuptime = fuptime % 86400
 hour = int(fuptime / 3600)
 fuptime = fuptime % 3600
 minute = int(fuptime / 60)
 uptime = ''
 if day == 1:
  uptime += '%d day, ' % day
 if day > 1:
  uptime += '%d days, ' % day
 uptime += '%d:%02d' % (hour, minute)
 output('Uptime', uptime)

# Battery Function [Requires: acpi]
def battery_display(): 
 p1 = Popen(['acpi'], stdout=PIPE).communicate()[0].lstrip()
 battery = p1.split(' ')[3].rstrip('\n')
 output ('Battery', battery)

# Desktop Environment Function 
def de_display():
 de = 'None found'
 for key in de_dict.keys():
  if key in processes: de = de_dict[key]
 output ('Desktop Environment', de)

# Window Manager Function
def wm_display():
 wm = 'None found'
 for key in wm_dict.keys():
  if key in processes: wm = wm_dict[key]
 output ('Window Manager', wm)

# Shell Function
def sh_display():
 sh = os.getenv("SHELL").split('/')[-1].capitalize()
 output ('Shell', sh)

# Packages Function
def packages_display():
 p1 = Popen(['pacman', '-Q'], stdout=PIPE)
 p2 = Popen(['wc', '-l'], stdin=p1.stdout, stdout=PIPE)
 packages = p2.communicate()[0].rstrip('\n')
 output ('Packages', packages)

# File System Function
def fs_display(mount=''):
 p1 = Popen(['df', '-TPh', mount], stdout=PIPE).communicate()[0]
 used = [line for line in p1.split('\n') if line][1]
 used = used.split()[3]
 total = [line for line in p1.split('\n') if line][1]
 total = total.split()[2]
 type = [line for line in p1.split('\n') if line][1]
 type = type.split()[1]
 if mount == '/': mount = '/root'
 fs = mount.rpartition('/')[2].title() + " FS"
 part = '%s / %s (%s)' % (used, total, type)
 output (fs, part)

# Run functions found in 'display' array.
for x in display:
 call = [arg for arg in x.split(':') if arg]
 funcname=call[0] + '_display'
 func=locals()[funcname]
 if len(call) > 1:
  func(arg)
 else:
  func()

# Array containing values.
result.extend(['']*(16 - len(display)))

###### Result #######
print ("""%s
%s                ,                
%s                #                %s
%s               ###               %s
%s              ;####              %s
%s              #####;             %s
%s             ; #####;            %s
%s            +##.#####            %s
%s           +##########           %s
%s          ######%s#####%s##;         %s
%s         ###%s############%s+        %s
%s        #%s#################       %s
%s      .########    #####;`\".     %s
%s     .#######;      ;#####.       %s
%s     #######;        ;#######`     %s
%s    #########'      '#########    %s
%s  ;#####                  #####;   %s
%s  ##'                        '##  %s 
%s #'                            `#  
%s """) % (color, color, color, result[0], color, result[1], color, result[2], color, result[3], color, result[4], color, result[5], color, result[6], color, color2, color, result[7], color, color2, color, result[8], color, color2, result[9], color2, result[10], color2, result[11], color2, result[12], color2, result[13], color2, result[14], color2, result[15], color2, clear)

if screen == 'True':
 screenshot()

Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

#3 06-02-2015 16:38:29

WarLocG
#! modo de compet

Re : [Fork] archey 0.2.8 modifié par mes soins [version 6]

Petit up pour signaler une mise a jour du script


Avant de poser vos questions, jeter un oeil ici
Mon CodeVault et Wiki : ici
Les messages privés envers le staff sont uniquement pour les cas d'urgence ou affaires privées (personnelles). Les demandes se feront exclusivement sur le forum. Merci de respecter cette clause sous peine de sanctions.

Hors ligne

Pied de page des forums