painschen Geschrieben 3. Januar 2009 Geschrieben 3. Januar 2009 Guten Abend die Fachinformatiker! Bin relativ fit bei Themen wie Webdesign und PHP/SQL - aber das was ich mir jetzt vorgenommen habe übersteigt mein Know-How etwas.. besonders weil mir der Grundgedanke für das ganze fehlt.. Als kleinen Anreiz damit ich möglichst zeitnah Unterstützung bekomme: Wenn mir jemand bei dem Projekt unter die Arme greift und das kleine Script funktioniert - bin ich bereit als Dank meine Praktiumsvergütung freizugeben. Wenn ihr skeptisch seid, bekommt ihr das gerne schriftlich. Vorwort: Ich mache ein Prakiktum bei einer Firma die über VPN/Intranet Ihre Daten vom Kunden zur Verfügung gestellt bekommt. Das ganze läuft über ein Portal das anhand eines Formulars (glaube über GET) die gewünschten Daten rausgibt. Funktionsweise: Schritt 1: Login (Eingabe Benutzername/Passwort) Schritt 2: Auswahl Kunde (man hat über ein Login mehrere Zugänge) Schritt 3: Projekt-Nr. Schritt 4: einzelne Artikelnummern Nach Schritt -4- erhalten wir dann den Text und die Preise der Artikelnummer. Soweit so gut... Nun habe ich gehört, dass man über Shell oder WGET den Prozess vereinfachen kann. Und zwar könne ich über ein Formular bei dem ich die Projektnummer eingebe - zusätzlich mehrere Artikelnummern eingeben und alle gleichzeitig herunterladen (über eine Schleife oder sonst was). Hintergrund: Mein "Chef" hat mir zugesagt, dass ich bei der Vermittlung von Hilfe eine große Chance zur Übernahme in die Ausbildung bekomme. Es kennt sich in dem Gebieht einfach keiner aus (alles Netzwerk-Menschen) und ich könnte die Stelle dringend gebrauchen (deswegen auch die Bereitschaft die 300 Euro zu bezahlen). Also abgesehen davon, dass ich nicht einmal weiß - wie ich an diese Daten gelange, bräuchte ich jemand der mir die Programmierung von dem Script koordiniert. Wie gesagt ich kann PHP, aber hier bin ich etwas überfragt. Habe eben viel über WGET gegoogelt und es schein damit funktionieren zu können - aber damit hab ich 0 Erfahrung. Wer hat Zeit/Lust mir zu helfen und würde sich über nebenbei leicht verdiente 300€ freuen? Sehr großen Dank im voraus! Zitieren
lordy Geschrieben 3. Januar 2009 Geschrieben 3. Januar 2009 Also mit WGET und Shell geht das zwar, finde ich aber persönlich recht fummelig. Ich poste dir einfach mal ein Perl-Script, das eine Webseite bedient. Wenn du PHP schon kannst, kannst du dir daraus vielleicht schon einiges ableiten. Vielleicht kannst du die Aufgabe ja auch mit Perl lösen, dann ist das Modul WWW::Mechanize dein Freund #!/usr/bin/perl use strict; use warnings; use WWW::Mechanize; # Benutze Variablen deklarieren my ($number, $password, $receipients, $message); my $baseurl = "https://kundenservice.klarmobil.de"; # Benutzername aus dem Environment holen if (defined($ENV{'SMS_USERNAME'})) { $number = $ENV{'SMS_USERNAME'}; } else { print "\$SMS_USERNAME nicht gesetzt !\n"; exit 1; } # Passwort aus dem Environment holen if (defined($ENV{'SMS_PASSWORD'})) { $number = $ENV{'SMS_PASSWORD'}; } else { print "\$SMS_PASSWORD nicht gesetzt !\n"; exit 1; } # Empfaenger aus den Parametern holen if (defined($ARGV[0])) { $receipients = join(', ', @ARGV); } else { print "Keine Empfaenger definiert !\n"; exit 1; } # Nachricht einlesen (STDIN) $message = <STDIN>; if ($message eq '') { print "Nachricht ist leer !\n"; exit 1; } # Neues Mechanize Objekt mit strikter Fehlerbehandlung erstellen my $mech = WWW::Mechanize->new( autocheck => 1 ); # Basis-Adresse aufrufen $mech->get($baseurl); # Einloggen $mech->submit_form( form_number => 1, fields => {username => $number, password => $password} ); # Menu-Punkt "SMS-Versand" aufrufen $mech->follow_link( text_regex => qr/SMS-Versand/i ); # SMS senden $mech->submit_form( form_name => "sms_form", fields => { sms_receiver => $receipients, data => 'Dies ist ein Test' } ); # Session beenden $mech->follow_link( text_regex => qr/Logout/i ); exit; P.S.: Für 300 Euro kannst du in Indien ein halbes Betriebssystem programmieren lassen Zitieren
painschen Geschrieben 3. Januar 2009 Autor Geschrieben 3. Januar 2009 Wenn du einen Inda hast der mir das macht - dann gleich her mit ihm! (= Oder schreib du mir das PERL Script für die 300? Aber erstmal danke für den Ansatz - hatte mich bis eben noch nie mit PERL beschäftigt und teste das jetzt mal mit ActivePerl (hab mir das eben installiert).. Finde bloß das Modul nicht in einer Form, wie ich es installieren könnte? Wie gesagt ich hab mir ActivePerl heruntergeladen - oder ist da das WWW::Mechanize schon dabei? Zu deinem Script: Das funktioniert auch mit einem verknüpftem Formular? Ich gehe davon aus, dass darüber die Zugangsdaten - sowie die SMS-Nachricht und Nummer hinterlegt werden und man dann über ein -Senden Button- das ganze verknüpft mit klarmobil versendet? Wenn ja, kannst du mir das Script mit Formular schicken? Ansonsten bin ich noch dankbarer, wenn du das Script sogar mit mir programmieren könntest... :hells: Zitieren
lordy Geschrieben 3. Januar 2009 Geschrieben 3. Januar 2009 Mit ActivePerl habe ich leider überhaupt keine Erfahrungen, ich habe kein Windows. WWW::Mechanize ist sozusagen ein Frontend für LWP::Agent, was mehr oder weniger den Funktionsumfang von wget hat. Da du ja Shell/Wget erwähnt hattest, war ich davon ausgegangen, das es um eine Lösung auf Linux-Basis geht. Das Script was ich heute morgen gepostet habe macht im Endeffekt folgendes: - Klarmobil-Seite aufrufen - Benutzername und Passwort in das Web-Formular eingeben - Senden drücken - Im dann eingeloggten Menü den Punkt "SMS-Versand" anklicken - In diesem Webformular dann Empfänger und Nachricht eintragen - Wieder Senden drücken - Abmelden Wenn ich dich richtig verstanden habe, sollte das ja schon ungefähr das sein, was du machen möchtest. Ich nehme zwar für meine Hilfe normalerweise kein Geld, aber wenn wir hier eine Lösung für dich finden, kannst du ja 50 EUR an Wikipedia spenden, da haben dann alle was von Zitieren
painschen Geschrieben 3. Januar 2009 Autor Geschrieben 3. Januar 2009 Nochmal danke für die rasche Rückmeldung! Ja von Shell/Wget hatte ich gesprochen, weil wir hier einen Linux Server haben und mir ein Freund in dem Zusammenhang die Stichwörter shell/wget nannte. Aber vorhin hab ich gesehen, dass es PERL auch für Windows gibt und da mir das besser liegt - tendiere ich in diese Richtung! (= Ich schau mal das ich das WWW::Mechanize da zum laufen bringe und das cgi-bin Verzeichnis testen kann. Das blöd ist, dass ich das nur in der Firma später machen kann, da ich nur dort auf das Intranetportal zugreifen kann. Also hier sind einige Infos mehr zum Portal: Fenster 1 (index.jsp): Auswahl der Sprache (deutsch/englisch) - sowie Benutzername und Passwort Weiter-Button: javascript:login(); Fenster 2: Kundennummer-Auswahl Weiter-Button: javascript:login_customer(); Fenster 3: Auswahl von der Bibliothek (in unserem Fal brauchen wir die Medienablage) Weiter-Button: javascript:showBusy(null,%20'%20Bearbeitung%20l%C3%A4uft...');switchMenu(%20MOD_NAME_MEDIAS) Fenster 4: Nun klick ich auf die Suchabfrage: Button: javascript:action('MOD_NAME_MEDIAS',%20'SUBMOD_SEARCH','TARGET_PROFI_SEARCH') Nun öffnet sich die Profisuche in einem PopUp (URL: http://xx.xx.xxx.xxx:8080/opas/jsp/medias/p_profi_search.jsp?target=init&&doMediasSearch=true Dort wähle ich über Auswahlfelder folgendes aus: - Sprache - Aktionsnummer - Artikelnummer Über den Button javascript:doAdvTextSearch() starte ich die Suche und erhalte meine Texte und Preise in verschiedenen Textfeldern. Als URL steht oben am Ende dann folgendes: http://xx.xxx.xxx.xxx:8080/opas/jsp/medias/p_profi_search.jsp?target=searchAdvTexts&actionIndex=00000001&articleIndex=00000001&langIndex=00000013&doMediasSearch=true Ich sehe gerade aber, dass die Aktionsnummer und Artikelnummer nicht in der URL zu sehen sind. Ist das mit Perl immer noch umzusetzen? Und wie sieht es mit deinem Beispiel inkl. Formular aus? Mit ActivePerl habe ich leider überhaupt keine Erfahrungen, ich habe kein Windows. WWW::Mechanize ist sozusagen ein Frontend für LWP::Agent, was mehr oder weniger den Funktionsumfang von wget hat. Da du ja Shell/Wget erwähnt hattest, war ich davon ausgegangen, das es um eine Lösung auf Linux-Basis geht. Das Script was ich heute morgen gepostet habe macht im Endeffekt folgendes: - Klarmobil-Seite aufrufen - Benutzername und Passwort in das Web-Formular eingeben - Senden drücken - Im dann eingeloggten Menü den Punkt "SMS-Versand" anklicken - In diesem Webformular dann Empfänger und Nachricht eintragen - Wieder Senden drücken - Abmelden Wenn ich dich richtig verstanden habe, sollte das ja schon ungefähr das sein, was du machen möchtest. Ich nehme zwar für meine Hilfe normalerweise kein Geld, aber wenn wir hier eine Lösung für dich finden, kannst du ja 50 EUR an Wikipedia spenden, da haben dann alle was von Zitieren
lordy Geschrieben 3. Januar 2009 Geschrieben 3. Januar 2009 Bei JavaScript fangen die Probleme an: Please note that Mech does NOT support JavaScript. Please check the FAQ in WWW::Mechanize::FAQ for more. Ich vermute zwar, das das JavaScript nur die Usability erhöhen soll, aber man müsste erstmal in den Sourcen schauen, um zu sehen, an welche URL dann die jeweiligen GET- oder POST-Requests geschickt werden. Da ich keinen Zugriff auf deine Web-Applikation habe, werde ich dir da nur schwer direkt helfen können. Zitieren
painschen Geschrieben 3. Januar 2009 Autor Geschrieben 3. Januar 2009 (bearbeitet) Der Azubi sagt, dass es ein wget Script gab, dass mehrere Daten gezogen hat - allerdings für einzelne Artikelnummern schon Minuten gebraucht hat und je nach Projekt leere Ergebnisse gebracht hat. Hilft es, wenn ich die wget Text-Logfiles poste? Denn in dem Ordner werden bei eine Abfrage Daten hinterlassen die anschließend wieder gelöscht werden. Der der das gemacht hat ist aber nicht mehr da - sprich ich hab keinen Source Code.. wget-phase-0-input.txt /home/opasg/OpasG-Automatisiert/wget/install/bin/wget --load-cookies cookies.txt --keep-session-cookies --save-cookies cookies.txt --output-document=output.log opas:8080/opas/jsp/p_login.jsp wget-phase-0.txt <!-- $Id: p_login.jsp,v 1.3 2002/10/23 12:23:57 Arne.Weber Exp $ --> <!-- $Id: p_login.html,v 1.6 2005/08/22 08:41:47 aweber Exp $ --> <html> <head> <title>Login-Page</title> <!-- $Id: css_loader.inc,v 1.6 2006/06/14 14:52:09 aweber Exp $ --> <!-- --------------------------------------- --> <!-- Include customer-specific stylesheet --> <link rel="stylesheet" href='../css/opas.css' type="text/css"> <!-- Include customer-specific stylesheet --> <!-- --------------------------------------- --> <!-- --------------------------------------- --> <!-- Include corrected js path --> <script src="../js/general_fkts.js" type="text/javascript"></script> <!-- Include corrected js path --> <!-- --------------------------------------- --> <script src="../js/general_fkts.js" type="text/javascript"></script> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body class="login" text="#000000" topmargin=0 leftmargin=0 marginwidth=0 marginheight=0> <table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%"> <tr> <td align="center" valign="middle"><img src="http://forum.fachinformatiker.de/images/opasg_start.gif"></td> </tr> </table> </body> </html> input.txt Deutschland 1000000607 5206319,7740315,5206321,5112904,7740439,7511646,7740316,7501642,7680095 testverzeichnis-Seite_0304 T (hier steht das T für Text und das Verzeichnis für das Zielverzeichnis.. das Deutschland ist der Kunde und dahinter die Aktionsnummer. Die Aufzählung in der Mitte sind die angeforderten Artikelnummern. Bringt das was? Bearbeitet 3. Januar 2009 von painschen Zitieren
Mr Unix Geschrieben 3. Januar 2009 Geschrieben 3. Januar 2009 Funktionsweise: Schritt 1: Login (Eingabe Benutzername/Passwort) Schritt 2: Auswahl Kunde (man hat über ein Login mehrere Zugänge) Schritt 3: Projekt-Nr. Schritt 4: einzelne Artikelnummern Da waren die Ansaetze im Thread schon richtig. Mittels Perl (egal ob original oder von Activestate) und LWP::UserAgent kannst du Sessions, Cookies, usw.. verarbeiten lassen. Allerdings finde ich es sehr schade, dass du versuchst die Arbeit auf andere abzuwaelzen. Wenn du jetzt nicht lernst wie man mit solchen Aufgabenstellungen umgehst, wirst du vielleicht nur noch nach Helfern anstatt nach Loesungen suchen. Du sagst, dass du PHP kannst? Ich will PHP zwar nicht loben, aber auch mit PHP solltest du die Aufgabenstellungen schnell loesen koennen. Curl, Parser/Lexer sind fuer solche Aufgaben die Stichworte die du suchst. Bei JavaScript fangen die Probleme an: Moeglichkeit 1: Den JavaScript-Teil selbst in Perl implementieren -> Viel Nachdenkerei, bedarf Aenderungen wenn Aenderungen auf der Webseite auftreten, dafuer aber sicherer. Moeglichkeit 2: Den Javascript-Teil runterladen, via SpiderMonkey/JavaScript von Perl verarbeiten lassen -> Schnell gemacht, aber sehr sehr unsicher. mfg Unix Zitieren
painschen Geschrieben 4. Januar 2009 Autor Geschrieben 4. Januar 2009 Schön das noch jemand was dazu gesagt hat.. danke! Hatte mich mit dem Thema Automatisierung noch nie beschäftigt und werde mein möglichstes tun um mir das anzueignen. Besonders weil ich jetzt erst sehe was damit möglich ist. Mir waren die Ansätze bisher nicht klar und ich schau nebenbei auch schon nach Tutorials. Aber das geht natürlich besser wenn man etwas Unterstützung hat.. Und wenn mir jemand bei der Programmierung unter den Armen greift ist es natürlich noch besser (was nicht heißt das ich das ganze dann kopier und mit dem Thema abschließe - ich würde den Code dann Zeile für Zeile durchgehen damit ich in Zukunft selbstständig arbeiten kann). Und deswegen ist mir das ja auch ein paar Euro wert! :floet: Ist schade, dass ich mit PERL Probleme mit JavaScript bekomme. Ich sehe schon, da kommt einiges auf mich zu. Hilft es was, wenn ich mit einigen Tools die Grunddaten des Portals ziehe (sofern Möglich)? Zitieren
Mr Unix Geschrieben 4. Januar 2009 Geschrieben 4. Januar 2009 Ist schade, dass ich mit PERL Probleme mit JavaScript bekomme. Ich sehe schon, da kommt einiges auf mich zu. Du bekommst mit Perl nicht mehr Probleme als mit jeder anderen Scriptsprache auch... :confused: Und dank dem oben verlinkten Modul kannst du auch JavaScript-Code von Perl ausfuehren lassen, aber wie ich da schon erwaehnt habe, sollte man da Vorsicht walten lassen. Hilft es was, wenn ich mit einigen Tools die Grunddaten des Portals ziehe (sofern Möglich)? Wie meinst du das? Welche Grunddaten? Was erhoffst du dir dadurch? Zitieren
painschen Geschrieben 1. April 2009 Autor Geschrieben 1. April 2009 Hat jemand Interesse das ganze umzusetzen? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.