Een recent artikel in het Tijdschrift van Red Hat door Noah Gift en Grig Gheorghiu called „dit niet uw grandpappy'ddd bevel is toonde aan hoe te om Python, het dd nut en de Google Grafiek API te gebruiken om een grafiek uit te vaardigen die productie toont bij verschillende blokgrootte. Nochtans was de output van het manuscript van de Python de daadwerkelijke grafiek maar geen URL die u toen in browser van het Web moest kleven om de resulterende grafiek te bekijken.
I hoewel dit manuscript zou zijn nuttig maar niet wilde moeten cut and paste een URL in browser van het Web zodat besliste ik die stap overbodig te maken.
Dit manuscript van Python is los gebaseerd op hun manuscript maar gebruikt de bibliotheken van de Python urllib met Grafieken te verbinden Google om een PNG- beelddossier te produceren dat later gebruikend routines pyGTK+ wordt getoond. #! /usr/bin/env de invoeros van de pythoninvoer sys de de invoerbevelen voeren Re van van de de invoer urllib invoer de klasse DisplayGraph urllib2 van OptionParser van de optparseinvoer van de de invoer pygtk ('2.0 ′) invoer pygtk.require gtk in: def delete_event (zelf, widget, gebeurtenis, data=None): vernietigt terugkeer Valse def (zelf, widget, data=None): gtk.main_quit () def __init (zelf): self.window = gtk. Venster (gtk.WINDOW_TOPLEVEL) self.window.connect („delete_event“, self.delete_event) self.window.connect („vernietig“, self.destroy) self.window.set_border_width (10) self.window.set_position (gtk.WIN_POS_CENTER) self.window.set_title (de „Productie van de Schijf“) pixbuf = gtk.gdk.pixbuf_new_from_file („/tmp/dd.png“) os.remove („/tmp/dd.png“) self.image = gtk. Beeld () self.image.set_from_pixbuf (pixbuf) self.image.sh ow () self.window.add (self.image) self.window.sh ow () def leiding (zelf): gtk.main () klasse GoogleChart: def __init (zelf): 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 = „″ def titel &chbh=30,15 (zelf, titel): self.gchart_title = self.gchart_title + schrijft de titel def (zelf, gegevens, etiketten, max_t): self.gchart_data = self.gchart_data + data.rstrip (`, ') self.gchart_labels = self.gchart_labels \ + etiketteert + „2: |Block%20Size|3: |Mb/s“ self.gchart_axis_range = „&chxr=1,0,“ + streptokok (max_t+10.0) self.gchart_scaling = „&chds=0,“ + streptokok (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 opener = urllib2.urlopen (self.gchart_url) als opener.headers [„tevreden-type“]! = beeld `/png': hef BadContentTypeException op (`Server responded \ 'met een tevreden-type van %s \ % opener.headers [„tevreden-type“]) open („/tmp/dd.png“, `wb').write (opener.read ()) def get_disk_throughput (apparaat, blokgrootte): blok grootte = streptokok (blokgrootte) + `k cmd = „dd if=/dev/zero of=%s bs=%s“ % (apparaat, blokgrootte) output = commands.getoutput (cmd) productie = 0 eenheid = „“ voor lijn in output.split (`n'): s = re.search (gekopiërde `. *, (\ S+) (\ S+) $ ', lijn) als s: productie = s.group (1) eenheid = s.group (2) onderbreking keer terug (productie, eenheid) als __name == „__main“: gebruik = „Gebruik: %prog opties“ syntactische parser = OptionParser (usage=usage) parser.add_option („- D“, „- apparaat“, dest=“ apparaat“, \ help=“ Apparaat aan gebruik. De gegevens van de schijf zullen worden beschreven! “) (opties, args) = parser.parse_args () apparaat = options.device als niet apparaat: parser.print_help ()

























