Ein neuer Artikel in der Red Hat-Zeitschrift durch Noah Gift und Grig Gheorghiu, das dieses genannt wird, ist nicht Ihr grandpappy'd DDbefehl, der wie man Pythonschlange, das DDdienstprogramm und das Google-Diagramm API, um benutzt ein Balkendiagramm zu produzieren demonstriert wird, das, Durchsatz an den verschiedenen Blockgrößen zeigt. Jedoch war der Ausgang vom Pythonschlangeindex das nicht tatsächliche Diagramm aber ein URL, das Sie in ein web browser dann kleben mussten, um das resultierende Diagramm anzusehen.
I, obwohl dieser Index aber nützlich sein würde, nicht ein URL in ein web browser also in mich schneiden undschneiden und müssen entschieden, diesen Schritt zu beseitigen wollte.
Dieser Pythonschlangeindex basiert lose auf ihrem Index, aber Gebrauch die Pythonschlange urllib Bibliotheken, an Google anzuschließen entwirft, um eine png-Bildakte zu erzeugen, die nachher unter Verwendung der pyGTK+ Programme angezeigt. #! /usr/bin/env Pythonschlangeimportsystems-Import-OS-Importbefehls-Importre von der Kategorie DisplayGraph gtk Import pygtk pygtk.require ('Import des optparse Import OptionParser Import urllib Importes urllib2 2.0): def delete_event (Selbst-, Widget, Ereignis, data=None): falsches Rückholdef zerstören (Selbst-, Widget, data=None): gtk.main_quit () def __init (Selbst): self.window = gtk. Fenster (gtk.WINDOW_TOPLEVEL) self.window.connect ( delete_event , self.delete_event) self.window.connect ( zerstören Sie , self.destroy) self.window.set_border_width (10) self.window.set_position (gtk.WIN_POS_CENTER) self.window.set_title ( Scheiben-Durchsatz ") pixbuf = gtk.gdk.pixbuf_new_from_file ( /tmp/dd.png ") os.remove ( /tmp/dd.png ") self.image = gtk. Bild () self.image.set_from_pixbuf (pixbuf) self.image.sh ow () self.window.add (self.image) self.window.sh ow () def Hauptleitung (Selbst): gtk.main () Kategorie GoogleChart: def __init (Selbst): self.gchart_url = http://chart.apis.google.com/chart? self.gchart_type = cht=bvs self.gchart_title = &chtt= self.gchart_data = &chd=t: self.gchart_labels = &chxl=0: | self.gchart_size = &chs=400×250 self.gchart_axis_labels = &chxt=x, y, x, y self.gchart_axis_position = &chxp=2,50|3.50 self.gchart_bar_settings = &chbh=30,15 def Titel (Selbst-, Titel): self.gchart_title = self.gchart_title + Titel def schreiben (Selbst-, Daten, Aufkleber, max_t): self.gchart_data = self.gchart_data + data.rstrip (`, ') self.gchart_labels = self.gchart_labels \ + beschriftet + 2: |Block%20Size|3: |Mb/s self.gchart_axis_range = &chxr=1,0, + str (max_t+10.0) self.gchart_scaling = &chds=0, + str (max_t+10.0) self.gchart_url += self.gchart_type \ + self.gchart_title + self.gchart_size self.gchart_url += self.gchart_bar_settings \ + self.gchart_data + self.gchart_labels self.gchart_url += self.gchart_axis_labels \ + self.gchart_axis_position self.gchart_url += self.gchart_axis_range \ + self.gchart_scaling Öffner = urllib2.urlopen (self.gchart_url) wenn opener.headers [ Inhaltart ]! = `Bild/png': Erhöhung BadContentTypeException (`Bediener responded \ 'mit einer Inhaltart %s \ % opener.headers [ Inhaltart ]) öffnen Sie ( /tmp/dd.png , `wb').write (opener.read ()) def get_disk_throughput (Vorrichtung, Blockgröße): Blockgröße = str (Blockgröße) + `k cmd = DD if=/dev/zero of=%s bs=%s % (Vorrichtung, Blockgröße) Ausgang = commands.getoutput (cmd) Durchsatz = 0 Maßeinheit = für Linie in output.split (`n'): s = re.search (`kopierte. *, (\ S+) (\ S+) $ ', Linie) wenn s: Durchsatz = s.group (1) Maßeinheit = s.group (2) Bruch zurückgehen Sie (Durchsatz, Maßeinheit) wenn __name == __main nn: Verbrauch = Verbrauch: %prog Wahlen grammatische Definition = OptionParser (usage=usage) parser.add_option ( - d , - Vorrichtung , dest= Vorrichtungs , \ zu verwenden help= Vorrichtung. Scheibendaten überschrieben! ") (Wahlen, args) = parser.parse_args () Vorrichtung = options.device wenn nicht Vorrichtung: parser.print_help ()

























