Hallo ich habe eine kleine Linuxsteuerung und möchte ohne Mysql zu installieren auf einen Server auf dem MySQL läuft Daten in die Datenbank schreiben. Wie stelle ich das am einfachsten an? Danke für die Hilfe
Indem du auf dem Server ein Programm hast, welches in die MySQL-Datenbank schreibt und welches du von deinem Computer aus aufrufst. Das kann z.B. ein in PHP geschriebenes WordPress sein. Dann brauchst du nur einen Browser, um in die Datenbank zu schreiben.
Hm die Steuerung (SPS)hat kein Browser installiert. Ich stelle mir einfach ein kleines Skript vor das ich mit der SPS aufrufe.
Dann nimm halt curl, oder was auch immer. Von Bedeutung ist nur, dass auf der Serverseite etwas die Daten entgegennehmen kann.
Jack V. schrieb: > Von Bedeutung ist nur, dass > auf der Serverseite etwas die Daten entgegennehmen kann. Und ohne geht es nicht? Also ich meine direkt in die Datenbank schreiben.
Jack V. schrieb: > Dann nimm halt curl, oder was auch immer. Von Bedeutung ist nur, > dass > auf der Serverseite etwas die Daten entgegennehmen kann. Sein Client ist eine SPS da läuft sicherlich kein Curl drauf Was für eine SPS ist es denn?
Was verstehst Du unter "MySQL installieren"? Client und Client-Library laufen auch ohne den Rest.
metzger schrieb: > Und ohne geht es nicht? Also ich meine direkt in die Datenbank > schreiben. Ich kann nicht auf deinen Computer schreiben, ohne dass *dein Computer* mir dafür eine Schnittstelle gibt. MySQL kann über das Netzwerk angesprochen werden. Wenn du das nicht nutzen willst, dann musst du eben etwas anderes nehmen, was über das Netzwerk angesprochen wird und dann lokal MySQL macht. Und nein, ohne Nahrung wird man nicht satt.
metzger schrieb: > Und ohne geht es nicht? Also ich meine direkt in die Datenbank > schreiben. Irgendwie musst du nunmal zum Server verbinden. Klar, du kannst es mit telnet Schritt für Schritt per Hand machen, oder ein Script basteln, welches genau das tut – wenn du’s kannst. Oder, wenn’s nicht ganz zu Fuß sein soll, könntest du ein kleines Script in Python oder PHP oder was auch immer, das die entsprechenden Libs mitbringt, schreiben – wenn du’s kannst. Nur erwarten, dass die Daten auf magische Weise ohne jegliche Verbindung vom Client auf dem Server teleportiert werden – das kannst du nicht, jedenfalls nicht ernsthaft. cppbert schrieb: > Sein Client ist eine SPS da läuft sicherlich kein Curl drauf Sein Client ist keine SPS in dem Sinne, denke ich. Sonst würde er’s nicht „Linuxsteuerung” nennen. Die Frage ist nur, was für’n Linux: Embedded, ohne die Möglichkeit, was nachzuinstallieren, oder schlankes „normales“ System, bei dem die obengenannten Optionen offen stehen.
Richte auf dem Server einen Benutzer ein mit Rechten für mysql. Zu dem verbindest du dich dann per SSH. Ob du dann auf der Konsole "mysql" direkt aufrufst oder ein Skript dafür benutzt, ist scheiß egal.
metzger schrieb: > ich habe eine kleine Linuxsteuerung und möchte ohne Mysql zu > installieren auf einen Server auf dem MySQL läuft Daten in die Datenbank > schreiben. > Wie stelle ich das am einfachsten an? Zu dem Linux der Steuerung passenden MySQL-Client installieren und dessen API benutzen. Oder: Zu dem Linux der Steuerung passenden MySQL-ODBC-"Treiber" installieren (impliziert allerdings typisch den MySQL-Client) und dann das ODBC-API benutzen. Das macht man, wenn die Möglichkeit besteht, dass es irgendwann mal eine andere DB als MySQL werden könnte. Alle darüber hinaus gehende Abstraktion ist mindestens Bullshit, ggf. sogar Bullshit² oder Bullshit³. Nur Wäbdesseiner schlagen sowas vor...
> dann per SSH > MySQL-ODBC-"Treiber" installieren Noch leichtgewichtiger geht es mit rsh!
Syntax Error schrieb: > Zu dem verbindest du dich dann per SSH. Das wäre auch meine Lösung. Einfach, effizient und man braucht keine Software. Selbst unter unter Windows 10 mit Boardmitteln machbar.
Danke für die vielen Tipps. Es handelt sich um ein Embedded Linux 4.14 (vielleicht hilft das) c-hater schrieb: > Zu dem Linux der Steuerung passenden MySQL-Client installieren und > dessen API benutzen. > > Oder: Zu dem Linux der Steuerung passenden MySQL-ODBC-"Treiber" > installieren (impliziert allerdings typisch den MySQL-Client) und dann > das ODBC-API benutzen. Das macht man, wenn die Möglichkeit besteht, dass > es irgendwann mal eine andere DB als MySQL werden könnte. > > Alle darüber hinaus gehende Abstraktion ist mindestens Bullshit, ggf. > sogar Bullshit² oder Bullshit³. Nur Wäbdesseiner schlagen sowas vor... Klingt gut was wäre das in meinem Fall? Fehlanzeige schrieb: > Noch leichtgewichtiger geht es mit rsh! Was ist das? Würde das bei mir funktionieren? Schönen Sonntag Euch
@ metzger Wichtig wäre noch die Information über die SPS-Software. Welche ist das? An sich müsste der Dokumentation der SPS-Software stehen, ob und wie man aus dem SPS-Programm mit dem Betriebssystem (also mittelbar auch mit Sockets oder anderen Komponenten) kommunizieren kann.
Theor schrieb: > @ metzger > > Wichtig wäre noch die Information über die SPS-Software. Welche ist das? > > An sich müsste der Dokumentation der SPS-Software stehen, ob und wie man > aus dem SPS-Programm mit dem Betriebssystem (also mittelbar auch mit > Sockets oder anderen Komponenten) kommunizieren kann. Es läuft eine art Codesys. Man kann Shell Skript aus der SPS Software raus Ausführen
metzger schrieb: > Es läuft eine art Codesys. Man kann Shell Skript aus der SPS Software > raus Ausführen "art Codesys" ist viel zu ungenau: -wir brauchen einen eindeutigen Produktnamen -oder das wissen das du es nicht weisst (dann bringen dir die Infos die hier kommen auch nichts, da gibt es keinen Standard der einfach so funktioniert, die Details sind sehr relevant um dir schnell helfen zu können) -Erkläre wo die Daten die du schreiben möchtest genau liegen und wie viel/wie oft geschrieben werden soll - kommen die aus der SPS oder aus einem HMI das in der SPS läuft etc... wir wissen bisher gar nichts Sammel dich und posten alle Information in ordentlicher Form, sonst wird das so nix
metzger schrieb: > Es läuft eine art Codesys. Man kann Shell Skript aus der SPS Software > raus Ausführen gibt es dazu einen Link/Doku oder sowas?
Nun. Dann wäre die Frage ob diese "Art" Codesys irgendwelche Funktionen enthält oder so erweiterbar ist, dass es mit einem MySQL-Server reden kann. (Etwa in dem Libraries nachgeladen werden können). Die Ausführungszeit wäre so am schnellsten, denke ich. Wenn aber diese "Art" Codesys Scripts ausführen kann, bliebe - ganz allgemein - die Möglichkeit den Port des Servers direkt anzusprechen. https://dev.mysql.com/doc/internals/en/client-server-protocol.html Wenn man das nicht zu Fuss programmieren will, dann gibt es sicherlich einige fertige Pakete dafür. Eine kurze Suche ergibt etwa das Perl Paket DBI.Net::MySQL.
Man könnte ja auch den Hersteller der "SPS" anfragen. Aber anscheinend ist hier wiedermal das Peterchenprinzip unterwegs. Man kann einen Lichtschalter anklemmen, also kann man auch SPS.
cppbert schrieb: > metzger schrieb: >> Es läuft eine art Codesys. Man kann Shell Skript aus der SPS Software >> raus Ausführen > > gibt es dazu einen Link/Doku oder sowas? Bitte biite lasst rsh und rcp in dem Grab in das sie seit 20 Jahren gehören. Nehmt stattdessen ssh.
c-hater schrieb: > Alle darüber hinaus gehende Abstraktion ist mindestens Bullshit, ggf. > sogar Bullshit² oder Bullshit³. Nur Wäbdesseiner schlagen sowas vor... Ich fürchte, du willst nicht verstehen, dass das Internet eigentlich nur noch ein Frontend für Datenbanken ist. Die müssen nichtmal relational sein, und von ein und demselben Hersteller schon garnicht. Und nein, ich bin kein Wäbdesseiner. Webdesigner auch nicht. Aber das Wissen um bestimmte Technologien und wann man sie sinnvoll einsetzt, zeichnet einen halbwegs kompetenten Ingeneur aus.
c-hater schrieb: > Alle darüber hinaus gehende Abstraktion ist mindestens Bullshit, ggf. > sogar Bullshit² oder Bullshit³. Nur Wäbdesseiner schlagen sowas vor... Allmählich hast Du den Punkt erreicht, an dem Du Dich einfach nicht mehr zu halbwegs aktuellen technischen Themen äußern solltest. Du bist so weit ins Hintertreffen geraten, dass es allmählich nur noch peinlich ist, und erhebst Deine eigene Rückständigkeit aber zum Maß aller Dinge. Geh einfach mit Deinen anderen Opas zusammen Steine sammeln oder so.
Salopp ausgesprochen besteht eine Datenbank aus einem Sack voll Dateien, die die Daten enthalten (die eigentliche Datenbank) und einem paar Tools, die den Zugriff ermöglichen. Das Ganze ist unabhängig davon, ob es sich um eine Mysql-Datenbank handelt und auch unabhängig von eventuellen Zugriffsrechten. Aber Du kannst nicht einfach - "von der Seite her" - auf irgendeine Datei zugreifen und da was anhängen. Da ist ein Schredder effektiver. Änderungen an einer Datenbank müssen einem genau definierten Schema folgen und bevor Du eine eigene Database Engine programmierst, solltest Du eventuell die dafür vorgesehene verwenden bzw. ansteuern. Ein Tip am Rande: Ein Simpel-Format wie z.B. CSV sollte sich, wenn Du denn Schreibrechte hast, einfach implementieren lassen. Da hängst Du dann einfach Deine Daten an und an und an... Praktisch jede Database Engine hat einen Importfilter für dieses Format. Somit brauchst Du nur die aktuellen Daten zu importieren, wenn Du sie denn brauchst und die Datei dann zurücksetzen bzw. löschen. Notfalls kannst Du dass auch durch einen Batch-Job, zeitgesteuert ausführen lassen. Der Job muss aber dann auch die nötigen Rechte haben. Oder so - oder auch nicht.
> Bitte biite lasst rsh und rcp in dem Grab Natürlich braucht die mysql-Kiste einen rsh-daemon. Wo du den ausgräbst ist dir überlassen. Mit rsh dann etwa so (in einer Zeile) von Windows aus: start /min cmd.exe /c "rsh hostname -l databaseuser echo """/bin/echo insert into tablename (data1,data2,data3) values (1,'"""string"""',3) | mysql -h localhost -u debian-sys-maint -pdLp3KK12 -A databasename""" Und zack stehen die Werte 1,"string",3 in der Tabelle. Ganz ohne ssh-Gedöhns oder ODBC-Krampf. Mit den " und ' musst du u.U. noch ein wenig experimentieren damit passend gequotet wird. > Aber Du kannst nicht einfach - "von der Seite her" - auf irgendeine > Datei zugreifen und da was anhängen Was nen Gesülze. Natürlich kann man.
Und dann war da noch der Unterschied zwischen Lösungen, guten Lösungen und der vollkommenen Idiotie, das so zu machen.
> das so zu machen.
Bezweifelst du die Funktion?
Fehlanzeige schrieb: > Noch leichtgewichtiger geht es mit rsh! Die rsh benutzt nur noch, wer nicht mehr alle Latten am Zaun hat.
Ihr kleinen Streber wisst gar nicht, was in richtigen Industriebetrieben noch so im Einsatz ist.
Fehlanzeige schrieb: > Ihr kleinen Streber wisst gar nicht, was in richtigen > Industriebetrieben noch so im Einsatz ist. Daß es in "richtigen Industriebetrieben" immer noch unfähige Deppen gibt, die sämtliche aktuellen Sicherheitsregularien und -Empfehlungen und den aktuellen Stand der Technik ignorieren, beweist nur die Existenz unfähiger Deppen.
Fehlanzeige schrieb: > Mit rsh dann etwa so (in einer Zeile) von Windows aus: > > start /min cmd.exe /c "rsh hostname -l databaseuser > […] Und? Mit ssh lässt sich genauso etwas auf der Zielmaschine ausführen. Ich sehe absolut keinen Vorteil für den alten, toten Kram da. Nur, weil’s in „richtigen Industriebetrieben“ noch im Einsatz ist, muss man privat keine Zeitreise in die Vergangenheit machen. Manche „richtige Industriebetriebe“ sind so träge, die fahren gar noch MS-DOS auf irgendwelchen Steuer-386ern. Wenn du deinen eigenen Empfehlungen also folgen, und das machen möchtest, was „richtige Industriebetriebe” so tun, solltest du also konsequenterweise auch sowas benutzen.
@Sheeva P. @Jack V. Passt auf, dass Ihr nicht von euren hohen Rössern herunterfallt. Ist noch gar nicht so lange her, da habe ich mit einem Windows 3.11-er Rechner die Maschinen besucht. Die Software lief im Textmodus und griff sehr tief in die Hardware ein. Schon XP ging nicht. Der Grund dafür war ein ganz einfacher: Die Firma, die die SPS hergestellt hat hat schon vor X Jahren (mehr als 20 Jahre) die Aktualisierung der Programmiersoftware eingestellt. Möchte nicht wissen in wie vielen Betrieben heute noch Uralt-Festo-Steuerungen oder die gute-alte S5 ihren Dienst tun. Oft werden die erst dann auf den Müll geworfen, wenn man Änderungen nicht mehr vornehmen kann oder keine Ersatzteile zu haben sind. Die "Deppen" haben also entschieden, dass die Maschine noch läuft; der Output ausreichen ist; ein Umbau (auf eine aktuelle SPS) zu lange dauert (Produktionsausfall); ein "Neubau" unsinnig teuer ist. Natürlich dürft Ihr weiter auf euren funkelnagelneuen Laptops - oder was Ihr sonst so quält rumhacken.
Sebastian S. schrieb: > @Jack V. > Passt auf, dass Ihr nicht von euren hohen Rössern herunterfallt. Welches hohe Ross? Dass rsh vor Jahrzehnten von ssh abgelöst worden ist, ist kein zu großes Geheimnis. Dass ssh quasi ein Drop-in-replacement ist, auch nicht. Dass heute noch Linuxmaschinen laufen, auf denen zwar rsh, aber kein ssh verfügbar ist, halte ich für eine sehr gewagte These. Das wären dann auch Maschinen, die via Token Ring auf diesen schmucken Koax-Leitungen, wie sie damals™, vor meiner Zeit sogar noch, verbaut worden sind, kommunizieren – die hätten also noch ’nen Kernel der Version 2.0 oder früher, und könnten mit heutiger Netzwerkhardware gar nix anfangen. In dieser Zeit wurden jedoch kaum kommerzielle Systeme mit Linux bestückt – zum Teil schlicht, weil’s das da noch gar nicht gab. Entsprechend gehe ich nicht davon aus, dass es sich hier um eine solche Rarität handelt, auf der zwar rsh, aber kein ssh verfügbar wäre. Dass hingegen Steuerungs-Rechner mit 386er CPU und MS-DOS heute noch existieren, halte ich für wahrscheinlich – aber dass es irgendwo solche Altlasten gibt, ist doch kein Argument dafür, selbst auf tote Rösser zu setzen, wenn es keine zwingende Notwendigkeit dafür gibt … Ist also eher ’n Pony, auf dem ich da sitze. Und runterschubsen könnte mich nur der TE, wenn der nun langsam mal die Fakten zum betreffenden System auf’n Tisch packen würde, die eigentlich schon in den Eingangsbeitrag gehört hätten. Ansonsten ist das wohl die einfachste Variante aus Nutzersicht: via ssh auf der Zielmaschine den dortigen Client mit dem Query bestücken, der’s dann in die DB malt. Aus Systemsicht ist’s freilich ’ne ziemlich bekloppte Variante: Ein Client connected zu ’nem Server, um dort einen Client zu starten, der auf der gleichen Maschine läuft, wie der Server, zu dem dieser Client, den man vom anderen Client aus, mit dem man ja zu dem anderen Server […] – you name it. Wenn man’s ordentlich machen wollte, nähme man ’ne Scriptsprache seiner Wahl, die Libs für MySQL mitbringt, und klöppelte sich damit ’nen Client zusammen, der direkt zum Server verbinden, und seinen Query dort absetzen kann. Das wären z.B. in Python keine zehn Zeilen Code …
:
Bearbeitet durch User
Nur mal als Idee:
1 | #include <mysql/mysql.h> |
2 | |
3 | #define MYSQL_SERVER "127.0.0.1";
|
4 | #define MYSQL_USER "username";
|
5 | #define MYSQL_PASS "passwort";
|
6 | #define MYSQL_DBNAME "datenbank";
|
7 | |
8 | MYSQL* my = NULL; |
9 | my = mysql_init(my); |
10 | mysql_options(my, MYSQL_OPT_RECONNECT, "true"); |
11 | |
12 | if (mysql_real_connect(my, MYSQL_SERVER, MYSQL_USER, MYSQL_PASS, MYSQL_DBNAME, 0, NULL, 0) == NULL) { |
13 | clog << "Fehler: mysql_real_connect(): " << mysql_error(my) << endl; |
14 | exit(1); |
15 | };
|
16 | |
17 | char* qry = new char[255]; |
18 | sprintf(qry, "%s", "UPDATE/INSERT INTO whatever"); |
19 | |
20 | if (mysql_real_query(my, qry, strlen(qry)) != 0) { |
21 | clog << "Fehler: mysql_real_query(): " << mysql_error(my) << endl; |
22 | exit(1); |
23 | };
|
24 | |
25 | delete qry; |
26 | |
27 | mysql_close(my); |
:
Bearbeitet durch User
metzger schrieb: > ich habe eine kleine Linuxsteuerung und möchte ohne Mysql zu > installieren auf einen Server auf dem MySQL läuft Daten in die Datenbank > schreiben. libmysql würd ich mal sagen.
Sebastian S. schrieb: > Ist noch gar nicht so lange her, da habe ich mit einem Windows 3.11-er > Rechner die Maschinen besucht. > [...] > Der Grund dafür war ein ganz einfacher: Die Firma, die die SPS > hergestellt hat hat schon vor X Jahren (mehr als 20 Jahre) die > Aktualisierung der Programmiersoftware eingestellt. > [...] > Oft werden die erst dann auf den Müll geworfen, wenn man Änderungen > nicht mehr vornehmen kann oder keine Ersatzteile zu haben sind. > > Die "Deppen" haben also entschieden, dass die Maschine noch läuft; der > Output ausreichen ist; ein Umbau (auf eine aktuelle SPS) zu lange dauert > (Produktionsausfall); ein "Neubau" unsinnig teuer ist. Dann haben die Techis nicht richtig kommuniziert. Wenn Deine museumsreife Hardware ausfällt und es keinen Ersatz mehr dafür gibt, hat das Unternehmen ein veritables Problem (Produktionsausfall). Wir können gerne über derartige Risiken und deren Rechtsfolgen diskutieren, Stichworte ISO27k, HIPAA, PCI-DSS, ISIS, SOC, AICPA, SSAE, ...
Die andere etablierte Variante wenn man seinen Datenbankerver nicht komplett dem Netzwerk öffnen will ist ein möglichst schmales REST-API auf dem Server anzubieten mit dem sich dann genau definierte Operationen (und sonst nichts) in der Datenbank auslösen lassen oder genau definierte Daten für genau definierte Benutzer abgerufen werden können, mit nichts als einem simplen http(s) client (den es praktisch überall gibt) und ohne daß das Endgerät spezielle Software oder Treiber braucht oder Kenntnis über die Datenbank oder deren Struktur haben muss. Also entweder quick & dirty: libmysql (mit dem ganzen Benutzer- und Rechte- und Sicherheitszirkus den das nach sich zieht) oder einfach, skalierbar und nachhaltig: REST-API.
der Thread-Starter war schon ne Woche nicht mehr hier - streitet euch nicht, besonders dann wenn immer noch absolut nicht klar ist was seine "SPS" überhaupt ausführen KANN
cppbert schrieb: > der Thread-Starter war schon ne Woche nicht mehr hier Weißt Du, ob er hier nicht einfach rumlurkt? > - streitet euch nicht Vielen Dank für Deine Ermahnung, Mutti, aber wenn ich mich streite, dann wirst Du es merken -- versprochen. Und daß hier immer noch irgendwelche Schwachmaten unverschlüsselte Steinzeitprotokolle empfehlen, ist bereits schlimm und kritikwürdig genug. Wenn dies aber auch noch mit verlogenen, unseriösen Hinweisen auf irgendwelche obskuren, und (natürlich) nicht genannten "Industriebetrieben" geschieht, welche schon aus rechtlichen Gründen den aktuellen Stand der Technik (in Deutschland mindestens das Grundschutzhandbuch des BSI) umsetzen MÜSSEN, dann muß man nicht nur den Threadstarter, sondern auch künftige Leser darauf hinweisen, daß dies a) erhebliche Risiken birgt, es b) bessere Alternativen gibt und c) völlig unverantwortlich ist, trotzdem immer noch Steinzeitschrott zu benutzen.
Sheeva P. schrieb: > Dann haben die Techis nicht richtig kommuniziert. Wenn Deine > museumsreife Hardware ausfällt und es keinen Ersatz mehr dafür gibt, hat > das Unternehmen ein veritables Problem (Produktionsausfall). Sheeva P. schrieb: > Wenn dies aber auch noch mit verlogenen, > unseriösen Hinweisen auf irgendwelche obskuren, und (natürlich) nicht > genannten "Industriebetrieben" geschieht, welche schon aus rechtlichen > Gründen den aktuellen Stand der Technik (in Deutschland mindestens das > Grundschutzhandbuch des BSI) umsetzen MÜSSEN Aha. Müssen. Ein "Industriebetrieb" muß in dem hier genannten Zusammnenhang prinzipiell gar nix. Weder alte Maschinen ersetzen, noch irgendwelche BSI-Richtlinien bei deren Vernetzung erfüllen. Schon gar nicht aus obskuren rechtlichen Gründen, ausser es gibt für sein Produkt spezielle Anforderungen (Medizin, Luft- und Raumfahrt, was auch immer). Es ist sogar erlaubt, ein Unternehmen so zu führen, daß es pleite geht. Das Konzept nennt sich unternehmerische Freiheit. Man muß halt für die Konsequnezen geradestehen. > Wir können gerne über derartige Risiken und deren Rechtsfolgen > diskutieren, Stichworte ISO27k, HIPAA, PCI-DSS, ISIS, SOC, AICPA, SSAE, Deine Weltsicht ist anscheinend auf einen sehr kleinen Sektor der großen weiten Industriewelt beschränkt. Oliver
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.