Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Womit kleines Linux-Programm (Web Service-Client) entwickeln? (https://www.delphipraxis.net/174799-womit-kleines-linux-programm-web-service-client-entwickeln.html)

Bbommel 10. Mai 2013 18:04

Womit kleines Linux-Programm (Web Service-Client) entwickeln?
 
Hallo zusammen,

ich werde in den nächsten Wochen ein kleines Tool für Linux entwickeln müssen und überlege, welche Sprache/Entwicklungsumgebung dafür am besten geeignet ist. Das Tool soll auf Linux-Servern laufen, auf denen in einem Verzeichnis, das mittels Samba für Windows freigegeben ist, ein Windows-Programm liegt und das Linux-Tool soll prüfen, ob das Windows-Programm aktualisiert werden muss und das dann ggf. auch durchführen.

Dazu gibt es einen Web Service, auf den das Linux-Tool zugreifen soll und mit dem es rausfinden kann, was die aktuelle Programm-Version ist und mit dem es dann ggf. auch die Updates "bestellen" und runterladen kann.

Den Web Service gibt es schon und er funktioniert prinzipiell auch. Wir hatten bisher das zu aktualisierende Programm selbst nach Updates suchen lassen, aber wegen Lock- und tw. auch Cache-Verhalten funktioniert das hinten und vorne nicht so, wie wir gehofft (und bei uns auch getestet) hatten. Insofern soll das nun, falls ein Kunde das wünscht, ein kleines Tool nachts per Cron-Job machen.

Jetzt meine Frage: ich habe noch nie wirklich für Linux entwickelt. Mit welcher (Skript-)Sprache sollte ich das am besten umsetzen? Programmiertechnisch so richtig zu Hause fühle ich mich bei Delphi, d.h. hier kann ich ein Programm sozusagen im Schlaf schreiben. Das würde dann ja für Lazarus/FreePascal sprechen. Oder wäre für so eine kleine Aufgabe vielleicht irgendein Perl-Skript o.ä. passender? Damit habe ich auch schon mal gearbeitet, brauche dann aber sicherlich ein bisschen mehr Zeit, um mich da reinzuwurschteln. Ähnliches würde für C/C++ gelten.

Was meint ihr?

Bis denn
Bommel

implementation 10. Mai 2013 18:33

AW: Womit kleines Linux-Programm (Web Service-Client) entwickeln?
 
Wenn die Aufgabe wirklich winzig ist, würde evtl. ein einfaches Shellskript reichen (bash, csh, ksh, rc oder so). Perl ist praktisch der große Bruder davon.
Im Prinzip hast du alle Wahl der Welt, aber für einfache Aufgaben sind Shellskripte einfach perfekt.
Webresource anfordern mit Wget oder Curl, Prüfsumme mit sha512sum, md5sum oder OpenSSL, RegEx mit Sed: Alles einfach so ohne jegliches "einbinden" oder so benutzbar (vorausgesetzt sie sind installiert).

paetzke 10. Mai 2013 20:55

AW: Womit kleines Linux-Programm (Web Service-Client) entwickeln?
 
ich würde da zu Bash raten, wenns nicht mehr als 100 zeilen sind - wonach es sich anhört. hört sich ja eher nach 10 zeilen an. stichworte hat mein vorposter alle schon genannt.

sx2008 10. Mai 2013 21:42

AW: Womit kleines Linux-Programm (Web Service-Client) entwickeln?
 
"Web Service" heisst doch wohl SOAP + WDSL, oder?
Falls ja, dann tut man sich mit WGet oder Curl etwas schwer weil man jeden Request als XML-Datei zuerst erzeugen muss und dann die Response-Datei (auch XML) parsen muss.

In dem Fall würde ich zu Python greifen (ist einfach schöner und nicht so kryptisch wie Perl) und mit dem Modul SOAPpy arbeiten.
Hier gibt es eine Beschreibung dazu.

Falls der Web Service dem REST Modell folgt, dann kann man auch mit Shellskripts arbeiten.

implementation 10. Mai 2013 23:25

AW: Womit kleines Linux-Programm (Web Service-Client) entwickeln?
 
Zitat:

Zitat von sx2008 (Beitrag 1214995)
Falls ja, dann tut man sich mit WGet oder Curl etwas schwer weil man jeden Request als XML-Datei zuerst erzeugen muss und dann die Response-Datei (auch XML) parsen muss.

Erzeugen muss man ja keine Datei, das geht schnell per Here-Document:
Code:
befehlszeile ... <<EOF
<?xml version="1.0"?>
<...>
  <...>
</...>
EOF
Und beim Verarbeiten der Antwort könnte XPath helfen. Soll jetzt nicht heißen, dass ein Shellskript unbedingt die perfekte Lösung sein muss -- aber sooo ungeeignet ist es auch nicht.

Bbommel 11. Mai 2013 09:33

AW: Womit kleines Linux-Programm (Web Service-Client) entwickeln?
 
Vielen Dank für eure Antworten. In der Tat hätte ich den Web Service vielleicht näher beschreiben sollen. :) Es geht nicht einfach nur darum, eine neue Datei als Update runterzuladen, sondern tatsächlich sollen per SOAP Funktionen auf dem Server aufgerufen werden, da dieser zunächst prüfen muss, ob der Kunde Update-berechtigt ist und dann auch eine passende Lizenz generieren muss.

Insofern werde ich mit wget oder curl wahrscheinlich nicht soooo glücklich werden und der Hinweis auf Python mit passender Anleitung sieht mir nach einem guten Ansatz aus, vielen Dank! Python hatte ich für irgendwelche Skripte sogar schon hier auf meinem Windows-Rechner installiert, wie praktisch. Endlich mal wieder eine neue Sprache lernen... ;)

Bis denn
Bommel

implementation 11. Mai 2013 10:12

AW: Womit kleines Linux-Programm (Web Service-Client) entwickeln?
 
Zur Vervollständigung: In FreePascal könnte das hier sehr hilfreich sein.

grl 11. Mai 2013 12:40

AW: Womit kleines Linux-Programm (Web Service-Client) entwickeln?
 
Also, ich würde da immer FreePascal nehmen - wenn du Delphi gewöhnt bist und mit anderen Sprachen nicht wirklich fit.

Ganz nebenbei eignest du dir damit nämlich KnowHow an, daß du sicher in einem anderen Projekt (das dann vielleicht einfach näher an deinen Windows-Projekten dran sein muss) sicher mal brauchen kannst.

Luggi

mkinzler 11. Mai 2013 12:53

AW: Womit kleines Linux-Programm (Web Service-Client) entwickeln?
 
Andererseits schadet KnowHow in Unixstandard-Tools wie z.B. der Shellprogrammierung auch nicht

Namenloser 11. Mai 2013 18:19

AW: Womit kleines Linux-Programm (Web Service-Client) entwickeln?
 
Ich würde auch Python nehmen. Es ist im Unix-Bereich relativ etabliert und ich fühl mich dort eher zuhause als bei Bash oder Perl. Gibt auch sicher genügend fertige Frameworks/Bibliotheken für SOAP mit Python.

Valle 11. Mai 2013 18:56

AW: Womit kleines Linux-Programm (Web Service-Client) entwickeln?
 
Hi,

die Frage ist eigentlich nur, wie du die Aktualität prüfst und wo du deine neue Exe herbekommst. XML ist recht schwierig mit Bash, man könnte höchstens mit Regexen arbeiten. Hier wäre Python meine erste Wahl.

Wenn du einfach eine Text-Datei auslesen willst oder so, dann würde ich auf jeden Fall Bash nehmen. Das ist so richtig schön schnell und einfach. Allerdings auch sehr kryptisch und für einen Linux-Neuling sicher nicht leicht.

Von daher: Nimm Python, wenn du was neues lernen willst ohne großen Aufwand. Nimm Bash wenn du Zeit hast und was sinnvolles über "Linux" lernen willst. Nimm FreePascal, wenn's einfach nur schnell gehen muss.

Liebe Grüße,
Valentin

Bbommel 13. Mai 2013 06:44

AW: Womit kleines Linux-Programm (Web Service-Client) entwickeln?
 
Moin zusammen,

so, nach dem Wochenende mal wieder eine Antwort von mir. Zunächst noch mal vielen Dank für eure zahlreichen Rückmeldungen.

Insgesamt klingt Python für mich recht interessant, zumal man damit ja, wie der Link von sx2008 zeigt, SOAP offenbar auch recht einfach umsetzen kann (ich hoffe dann mal, dass das passende Modul SOAPpy schnell beim Kunden installiert werden kann, falls nötig). Der Vorteil, den ich im Moment im Vergleich zu einem Lazarus/FreePascal-Programm sehe, ist, dass ich einen (zurecht) misstrauischen Admin vielleicht leichter davon überzeugen kann, automatisch ein Skript laufen zu lassen, dass er sich selbst auch mal anschauen kann, als ein Binary, bei dem er mir völlig vertrauen müsste, dass das Ding keinen Mist auf seinem Server macht. Außerdem bin ich zugegeben auch neugierig auf dieses Python geworden und Arbeit soll ja auch mal Spaß machen. :)

Zu meiner Ehrenrettung will ich aber noch sagen, dass ich soooo unerfahren in Linux nun auch wieder nicht bin. Ich habe halt nur noch nie selbst so "richtig" dafür programmiert. :) Wobei mir durch die Diskussion hier klar geworden ist, dass das so ganz auch wieder nicht stimmt. Ich habe auch schon hier und da mal in Shell-Skripten rumgeschraubt, wenn die mal nicht so wollten wie ich, und vor einigen Jahren in einem Studenten-Nebenjob habe ich mir mit diversen kleinen Perl-Skripten das Leben auch deutlich erleichtert. Wegen diesem ganzen SOAP-Kram jetzt kam mir die Aufgabe aber etwas komplexer vor als die Sachen damals. Naja, wird sich aber wahrscheinlich doch eher in Grenzen halten. ;)

blackfin 15. Mai 2013 01:14

AW: Womit kleines Linux-Programm (Web Service-Client) entwickeln?
 
Python ist sicher eine gute Wahl.
Als Alternativen, die mir einfallen, wären da noch:

1) Für ein kleines Web-Tool unter Linux bietet sich auch an, ein kleines Scriptchen für node.js zu schreiben.
Mit Modulen wie "Express" oder "Connect" kannst du dir damit einen "Update-Bereitsteller" ziemlich schnell zusammenbauen.
Ist halt Javascript auf dem Server...auch wenn viele deswegen schreien, ich hab damit bisher nur gute Erfahrungen gemacht, auch was die Lernkurve, Langzeit-Stabilität und Performance angeht.

2) php (CLI), damit lässt sich das auch recht schnell realisieren. Fragt sich hier nur, wie das Tool getriggert wird. Wenn es permanent laufen soll, ist php nicht das Mittel der Wahl. Falls es zyklisch getriggert wird, ginge das aber z.B. per cronjob.

3) Lua (mit LuaSocket-Extension und entsprechendem CLI-Interpreter, den es für sogut wie jede Linux-Distro als Binary gibt).
Ist auch leicht zu lernen und bringt alles mit, was man dazu braucht.

wicht 16. Mai 2013 21:35

AW: Womit kleines Linux-Programm (Web Service-Client) entwickeln?
 
Zitat:

1) Für ein kleines Web-Tool unter Linux bietet sich auch an, ein kleines Scriptchen für node.js zu schreiben.
Mit Modulen wie "Express" oder "Connect" kannst du dir damit einen "Update-Bereitsteller" ziemlich schnell zusammenbauen.
Ist halt Javascript auf dem Server...auch wenn viele deswegen schreien, ich hab damit bisher nur gute Erfahrungen gemacht, auch was die Lernkurve, Langzeit-Stabilität und Performance angeht.
+1

Mein streamWriter-Server läuft mittlerweile auf Node.js und das ist vom feinsten, wie ich finde. Und um sich nicht mit dem hässlichen JavaScript zumschlagen zu müssen, kann man CoffeeScript benutzen - das ist an Python nahe dran, wie ich finde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz