Als mittelgroßes Unternehmen mieten wir für unsere Mitarbeiter Postfächer bei einem Hosting-Anbieter; eine Menge Postfächer. Diese gibt es in verschiedenen Größen, und je größer sie sind, desto teurer werden sie natürlich.
Neulich erhielt ich eine E-Mail, in der mehrere neue Konten angefordert wurden, und wollte diese gerade anlegen, als ich auf eine scheinbar ineffiziente Zuweisung stieß. Der Benutzer hatte ein mittelgroßes Konto, das etwa 150 € pro Jahr kostete, während er anscheinend mit dem kleinsten Konto für etwa 50 € pro Jahr auskommen konnte.
Das machte mich natürlich neugierig auf unsere anderen Zuweisungen und ich suchte nach einer Übersicht über die Nutzung aller unserer E-Mail-Konten. Kein Glück. Die einzige Möglichkeit, um zu sehen, wie viel des gemieteten Speicherplatzes tatsächlich genutzt wurde, bestand darin, durch die - nicht-restliche und zustandsabhängige - Weboberfläche unseres Hosting-Anbieters zu navigieren und die Statistiken für jeden einzelnen Benutzer aufzurufen.
Herausforderung angenommen!
In letzter Zeit bin ich es leid, Selenium zu verwenden, und wollte mir einige PhantomJS-basierte Alternativen ansehen. Dabei fiel mein Blick auf CasperJS und ich beschloss, es auszuprobieren.
Mit brew habe ich die neueste Entwicklungsversion heruntergeladen:
[shell]
$ brew update
$ brew install casperjs --devel
[/shell]
Das gesamte Skript finden Sie in diesem Gist, wobei Sie pro Abschnitt gehen:
[javascript]
var casper = require('casper').create({ verbose: true, logLevel: 'info' });
var credentials = JSON.parse(require('fs').read('./credentials.json'));
var url = 'private';
casper.start(url + '/user/login', function() {
this.fill('form#login_form', credentials, true);
});
[/javascript]
Die erste Zeile initialisiert CasperJS, wobei eine gewisse Protokollierung aktiviert ist. Die zweite Zeile liest eine einfache json-Datei ein, die die Formularfelder und Werte der Anmeldeseite enthält, während die dritte Zeile die Basis-URL unseres Hosting-Anbieters enthält.BASH-Datenanalyse:
Beginnen wir mit dieser missgebildeten HTML-Datei mit aufräumen. Da uns die vielen Warnungen, die tidy ausgibt, nicht interessieren, leiten wir stderr nach /dev/null um und erhalten so das Ergebnis:Ordentliches <geholt 2>/dev/null
ntttt</pre> <div Klasse=""klar""></div> <vor>ntt</pre> <div>nttt<Etikett>Aktuelle Mailboxgröße</label>nttt1921 MBntt</div> <vor>ntt</pre> <div>nttt<Etikett>Warnquote</label>nttt2250 MBntt</div> <vor>ntt</pre> <div>nttt<Etikett>Sendequote blockieren</label>nttt2375
Ordentliches <geholt 2>/dev/null | grep label</pre>
<div>nttt<Etikett><Etikett>E-Mail </label></label> <div>nttt<Etikett>E-Mail-Aliase</label>nttt <div>nttt<Etikett>Aktuelle Mailboxgröße</label>nttt1921 <div>nttt<Etikett>Warnquote</label>nttt2250 <div>nttt<Etikett>Sendequote blockieren</label>nttt2375 <div>nttt<Etikett>Senden und Empfangen blockieren Quote</label>nttt2500 MBntt</div> <div>nttt<Etikett>Pop aktiviert</label>nttt<img alt="" src="<br" />
Ordentliches <first-fetch 2>/dev/null | grep label | sed 's/^.*/label>//' | sed 's/\nt//g'
<div><Etikett><Etikett>Tauschen Sie </label></label> <div><Etikett>SMTP 1921 2250 2375 2500 MB</label></div> <Etikett><Etikett> <img alt="" src="<br" /><img alt="" src="<br" />...
Ordentliches <first-fetch 2>/dev/null | grep label | sed 's/^.*/label>//' | sed 's/\nt//g' | grep -v 'label|img|<br>|HOSTED'
Sunil Prakash Sunil Prakash REDAKTIERT</pre> </div> REDAKTIERT</div> 1921 2250 2375 2500 MB
Ordentliches <first-fetch 2>/dev/null | grep label | sed 's/^.*/label>//' | sed 's/\nt//g' | grep -v 'label|img|<br>|HOSTED' | sed 's/<.*//' | sed 's/ MB$//'
Sunil Prakash Sunil Prakash REDAKTIERT REDAKTIERT 1921 2250 2375 2500
cat data | paste -d , - - - - - - - - - | sed 's/,,/,.,/' | head -n 2
REDACTED,REDACTED,REDACTED,REDACTED,1921,2250,2375,2500 REDIGIERT,REDIGIERT,REDIGIERT,REDIGIERT,40,2250,2375,2500
cat data | paste -d , - - - - - - - - - | sed 's/,,/,.,/' | awk -F, {print $0 "," $5/$8*100"%" }' | head -n 2
REDACTED,REDACTED,REDACTED,REDACTED,1921,2250,2375,2500,76.84% REDACTED,REDACTED,REDACTED,REDACTED,40,2250,2375,2500,1.6%
cat data | paste -d , - - - - - - - - - | sed 's/,,/,.,/' | awk -F, '{print $0 "," $5/$8*100"" }' | sortieren -t, -k +9 -n -r | tail -n 2
REDIGIERT,REDIGIERT,REDIGIERT,REDIGIERT,0,2250,2375,2500,0 REDIGIERT,REDIGIERT,REDIGIERT,REDIGIERT,0,225,237,250,0
cat data | paste -d , - - - - - - - - - | sed 's/,,/,.,/' | awk -F, {print $0 "," $5/$8*100 }' | sortieren -t, -k +9 -n -r | Spalte -t -s , | Schwanz -n 5
REDIGIERT REDIGIERT REDIGIERT 1 2250 2375 2500 0.04 REDIGIERT REDIGIERT REDIGIERT 0 225 237 250 0
cat data | paste -d , - - - - - - - - - | sed 's/,,/,.,/' | awk -F, {print $0 "," $5/$8*100 }' | Sortieren -t, -k +9 -n -r | awk -F, '{ if ($8 > 250 && $9 < 10) print $3 "," $9"%" }' | Spalte -t -s,
GEKÜRZT 0.32% VERKÜRZT 0.2%
cat data | paste -d , - - - - - - - - - | sed 's/,,/,.,/'x | awk -F, '{ if ($8 > 250 && ($5/$8) < 10) print $0}'' | wc -l | xargs echo "100 *" | bc
6100
Verfasst von

Joshua Appelman
Unsere Ideen
Weitere Blogs
Contact
Let’s discuss how we can support your journey.



