NEWS
[gelöst].sh Skript starten
-
Hallo
Ich würde gerne eine .sh Skript auf einem entfernten Server starten, sprich:
-) mich automatisch dort einloggen
-) Skript ausführen.Geht das über JavaScript am ioBroker, wenn ja wie?
Danke für die Hilfe!
-
Hallo
Ich würde gerne eine .sh Skript auf einem entfernten Server starten, sprich:
-) mich automatisch dort einloggen
-) Skript ausführen.Geht das über JavaScript am ioBroker, wenn ja wie?
Danke für die Hilfe!
@homecineplexx Ja, geht mit Blockly. Da nimmst du den exec Baustein.
Beim Trigger dazu musst du entscheiden ob das periodisch oder aufgrund eines Datenpunktes passieren soll. -
@homecineplexx Ja, geht mit Blockly. Da nimmst du den exec Baustein.
Beim Trigger dazu musst du entscheiden ob das periodisch oder aufgrund eines Datenpunktes passieren soll.@siggi0904 ok danke, werd ich probieren!
-
@homecineplexx Ja, geht mit Blockly. Da nimmst du den exec Baustein.
Beim Trigger dazu musst du entscheiden ob das periodisch oder aufgrund eines Datenpunktes passieren soll.@siggi0904 said in .sh Skript starten:
@homecineplexx Ja, geht mit Blockly. Da nimmst du den exec Baustein.
Beim Trigger dazu musst du entscheiden ob das periodisch oder aufgrund eines Datenpunktes passieren soll.Sorry, dafür bin ich irgendwie zu blöd...wie funkt das?
-
@siggi0904 said in .sh Skript starten:
@homecineplexx Ja, geht mit Blockly. Da nimmst du den exec Baustein.
Beim Trigger dazu musst du entscheiden ob das periodisch oder aufgrund eines Datenpunktes passieren soll.Sorry, dafür bin ich irgendwie zu blöd...wie funkt das?
@homecineplexx Vielleicht hilft das: https://forum.iobroker.net/post/704463
-
@homecineplexx Vielleicht hilft das: https://forum.iobroker.net/post/704463
@wendy2702 said in .sh Skript starten:
@homecineplexx Vielleicht hilft das: https://forum.iobroker.net/post/704463
prinzipiell ein super Ansatz, danke, aber irgendwie will so ein einfaches Programm gar nicht:
Dabei hab ich node-js auch noch als NPM Modul im Javascript-Adapter hinzugefügtvar node_ssh = require('node-ssh'); var ssh = new node_ssh(); ssh.connect({ host: '192.168.5.30', username: 'testuser', password: 'xxx' }).then(() => { ssh.execCommand("./smartmeter.sh"); })Log-Ausgabe:
javascript.2 2022-02-21 08:28:45.126 error at Script.runInContext (vm.js:144:12) javascript.2 2022-02-21 08:28:45.125 error at script.js.used-Scripts.test-ssh:37:3 javascript.2 2022-02-21 08:28:45.124 error at script.js.used-Scripts.test-ssh:9:11 javascript.2 2022-02-21 08:28:45.118 error script.js.used-Scripts.test-ssh: TypeError: node_ssh is not a constructor -
@wendy2702 said in .sh Skript starten:
@homecineplexx Vielleicht hilft das: https://forum.iobroker.net/post/704463
prinzipiell ein super Ansatz, danke, aber irgendwie will so ein einfaches Programm gar nicht:
Dabei hab ich node-js auch noch als NPM Modul im Javascript-Adapter hinzugefügtvar node_ssh = require('node-ssh'); var ssh = new node_ssh(); ssh.connect({ host: '192.168.5.30', username: 'testuser', password: 'xxx' }).then(() => { ssh.execCommand("./smartmeter.sh"); })Log-Ausgabe:
javascript.2 2022-02-21 08:28:45.126 error at Script.runInContext (vm.js:144:12) javascript.2 2022-02-21 08:28:45.125 error at script.js.used-Scripts.test-ssh:37:3 javascript.2 2022-02-21 08:28:45.124 error at script.js.used-Scripts.test-ssh:9:11 javascript.2 2022-02-21 08:28:45.118 error script.js.used-Scripts.test-ssh: TypeError: node_ssh is not a constructorssh.execCommand("./smartmeter.sh"); })Gib da mal den absoluten Pfad an, nicht den relativen.
-
ssh.execCommand("./smartmeter.sh"); })Gib da mal den absoluten Pfad an, nicht den relativen.
@thomas-braun said in .sh Skript starten:
ssh.execCommand("./smartmeter.sh"); })Gib da mal den absoluten Pfad an, nicht den relativen.
das kann ich machen, aber das hilft mir doch nicht wirklich weiter das er sagt:
TypeError: node_ssh is not a constructor -
@thomas-braun said in .sh Skript starten:
ssh.execCommand("./smartmeter.sh"); })Gib da mal den absoluten Pfad an, nicht den relativen.
das kann ich machen, aber das hilft mir doch nicht wirklich weiter das er sagt:
TypeError: node_ssh is not a constructor@homecineplexx was hast du denn jetzt im JavaScript Adapter als zusätzliches Modul eingetragen?
NodeJS wie von dir geschrieben oder doch
node-sshWie erforderlich?
Und wenn dann auch in die richtige Instanz?
-
@homecineplexx was hast du denn jetzt im JavaScript Adapter als zusätzliches Modul eingetragen?
NodeJS wie von dir geschrieben oder doch
node-sshWie erforderlich?
Und wenn dann auch in die richtige Instanz?
@wendy2702 said in .sh Skript starten:
@homecineplexx was hast du denn jetzt im JavaScript Adapter als zusätzliches Modul eingetragen?
NodeJS wie von dir geschrieben oder doch
node-sshWie erforderlich?
Und wenn dann auch in die richtige Instanz?
sorry, ich meinte natürlich node-ssh, allerdings bin ich mir nicht wirklich sicher, ob das auch installiert wurde im hintergrund!
-
@wendy2702 said in .sh Skript starten:
@homecineplexx was hast du denn jetzt im JavaScript Adapter als zusätzliches Modul eingetragen?
NodeJS wie von dir geschrieben oder doch
node-sshWie erforderlich?
Und wenn dann auch in die richtige Instanz?
sorry, ich meinte natürlich node-ssh, allerdings bin ich mir nicht wirklich sicher, ob das auch installiert wurde im hintergrund!
@homecineplexx sagte in .sh Skript starten:
@wendy2702 said in .sh Skript starten:
, allerdings bin ich mir nicht wirklich sicher, ob das auch installiert wurde im hintergrund!
Dann nach gucken
-
@wendy2702 said in .sh Skript starten:
@homecineplexx was hast du denn jetzt im JavaScript Adapter als zusätzliches Modul eingetragen?
NodeJS wie von dir geschrieben oder doch
node-sshWie erforderlich?
Und wenn dann auch in die richtige Instanz?
sorry, ich meinte natürlich node-ssh, allerdings bin ich mir nicht wirklich sicher, ob das auch installiert wurde im hintergrund!
@homecineplexx sagte in .sh Skript starten:
allerdings bin ich mir nicht wirklich sicher, ob das auch installiert wurde im hintergrund!
Dann bekommst du einen NPM-Error. Wenn du es aber im JS-Adapter einträgst und dann mittels "speichern + schließen" abschließt, installiert er das ggf. fehlende NPM-Modul auch ganz von alleine ;)
Getestet und funktioniert:
const {NodeSSH} = require('node-ssh') const ssh = new NodeSSH() ssh.connect({ host: '192.168.x.x', username: 'ich', password: 'geheim' }).then(() => { ssh.execCommand('ls -al').then(function(result) { console.log('STDOUT: ' + result.stdout) console.log('STDERR: ' + result.stderr) }) }) -
@homecineplexx sagte in .sh Skript starten:
@wendy2702 said in .sh Skript starten:
, allerdings bin ich mir nicht wirklich sicher, ob das auch installiert wurde im hintergrund!
Dann nach gucken
Mit
cd /opt/iobroker npm ls node-sshkann man auch schauen, ob und wo das Modul eingetragen wurde.
-
@homecineplexx sagte in .sh Skript starten:
allerdings bin ich mir nicht wirklich sicher, ob das auch installiert wurde im hintergrund!
Dann bekommst du einen NPM-Error. Wenn du es aber im JS-Adapter einträgst und dann mittels "speichern + schließen" abschließt, installiert er das ggf. fehlende NPM-Modul auch ganz von alleine ;)
Getestet und funktioniert:
const {NodeSSH} = require('node-ssh') const ssh = new NodeSSH() ssh.connect({ host: '192.168.x.x', username: 'ich', password: 'geheim' }).then(() => { ssh.execCommand('ls -al').then(function(result) { console.log('STDOUT: ' + result.stdout) console.log('STDERR: ' + result.stderr) }) })@sborg said in .sh Skript starten:
const {NodeSSH} = require('node-ssh') const ssh = new NodeSSH() ssh.connect({ host: '192.168.x.x', username: 'ich', password: 'geheim' }).then(() => { ssh.execCommand('ls -al').then(function(result) { console.log('STDOUT: ' + result.stdout) console.log('STDERR: ' + result.stderr) }) })
stimmt, das funktioniert zumindest soweit schon mal:
javascript.2 2022-02-21 20:11:45.197 error Error: All configured authentication methods failed at doNextAuth (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/client.js:803:21) at tryNextAuth (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/client.js:993:7) at USERAUTH_FAILURE (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/client.js:373:11) at 51 (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/protocol/handlers.misc.js:337:16) at Protocol.onPayload (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/protocol/Protocol.js:2025:10) at AESGCMDecipherNative.decrypt (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/protocol/crypto.js:987:26) at Protocol.parsePacket [as _parse] (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/protocol/Protocol.js:1994:25) at Protocol.parse (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/protocol/Protocol.js:293:16) at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/client.js:713:21) at Socket.emit (events.js:400:28) at Socket.emit (domain.js:475:12) at addChunk (internal/streams/readable.js:293:12) at readableAddChunk (internal/streams/readable.js:267:9) at Socket.Readable.push (internal/streams/readable.js:206:10) at TCP.onStreamRead (internal/stream_base_commons.js:188:23) javascript.2 2022-02-21 20:11:45.196 error Error: All configured authentication methods failed javascript.2 2022-02-21 20:11:45.196 error An error happened which is most likely from one of your scripts, but the originating script could not be detected. -
Mit
cd /opt/iobroker npm ls node-sshkann man auch schauen, ob und wo das Modul eingetragen wurde.
@thomas-braun said in .sh Skript starten:
Mit
cd /opt/iobroker npm ls node-sshkann man auch schauen, ob und wo das Modul eingetragen wurde.
aber was genau sagt das aus??
chris@ioBroker:/opt/iobroker$ npm ls node-ssh iobroker.inst@3.0.0 /opt/iobroker └─┬ iobroker.javascript@5.2.21 └── UNMET DEPENDENCY node-ssh@^12.0.3 npm ERR! missing: node-ssh@^12.0.3, required by iobroker.javascript@5.2.21 -
@thomas-braun said in .sh Skript starten:
Mit
cd /opt/iobroker npm ls node-sshkann man auch schauen, ob und wo das Modul eingetragen wurde.
aber was genau sagt das aus??
chris@ioBroker:/opt/iobroker$ npm ls node-ssh iobroker.inst@3.0.0 /opt/iobroker └─┬ iobroker.javascript@5.2.21 └── UNMET DEPENDENCY node-ssh@^12.0.3 npm ERR! missing: node-ssh@^12.0.3, required by iobroker.javascript@5.2.21@homecineplexx sagte in .sh Skript starten:
aber was genau sagt das aus??
Das sagt aus, dass es nicht sauber installiert ist.
Sauber sähe es so aus:
echad@chet:/opt/iobroker $ npm ls node-ssh iobroker.inst@3.0.0 /opt/iobroker └─┬ iobroker.javascript@5.2.21 └── node-ssh@12.0.3 -
Also nur Exec reicht doch - wenn man den Befehl
sshpassnachinstalliert (in der Bash/Shell),
hier ein Beispiel wie ich nach dem Backup mein QNAP wieder runterfahre:
sshpass -p ************** ssh -p 22 -o StrictHostKeyChecking=no admin@192.168.1.199 poweroffpoweroffist hierbei der Shell Befehl der drüben ausgeführt wird, kann natürlich auch ein Script oder ein Befehl mit Parametern sein. -
@homecineplexx sagte in .sh Skript starten:
aber was genau sagt das aus??
Das sagt aus, dass es nicht sauber installiert ist.
Sauber sähe es so aus:
echad@chet:/opt/iobroker $ npm ls node-ssh iobroker.inst@3.0.0 /opt/iobroker └─┬ iobroker.javascript@5.2.21 └── node-ssh@12.0.3@thomas-braun said in .sh Skript starten:
@homecineplexx sagte in .sh Skript starten:
aber was genau sagt das aus??
Das sagt aus, dass es nicht sauber installiert ist.
Sauber sähe es so aus:
echad@chet:/opt/iobroker $ npm ls node-ssh iobroker.inst@3.0.0 /opt/iobroker └─┬ iobroker.javascript@5.2.21 └── node-ssh@12.0.3so, das hätte ich nun richtig gestellt:
chris@ioBroker:/opt/iobroker$ npm ls node-ssh iobroker.inst@3.0.0 /opt/iobroker ├─┬ iobroker.javascript@5.2.21 │ └── node-ssh@12.0.3 deduped └── node-ssh@12.0.3allerdings das Anmelden geht noch immer nicht:
javascript.2 2022-02-22 11:12:19.312 error Error: All configured authentication methods failed at doNextAuth (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/client.js:803:21) at tryNextAuth (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/client.js:993:7) at USERAUTH_FAILURE (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/client.js:373:11) at 51 (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/protocol/handlers.misc.js:337:16) at Protocol.onPayload (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/protocol/Protocol.js:2025:10) at AESGCMDecipherNative.decrypt (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/protocol/crypto.js:987:26) at Protocol.parsePacket [as _parse] (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/protocol/Protocol.js:1994:25) at Protocol.parse (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/protocol/Protocol.js:293:16) at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/client.js:713:21) at Socket.emit (events.js:400:28) at Socket.emit (domain.js:475:12) at addChunk (internal/streams/readable.js:293:12) at readableAddChunk (internal/streams/readable.js:267:9) at Socket.Readable.push (internal/streams/readable.js:206:10) at TCP.onStreamRead (internal/stream_base_commons.js:188:23) javascript.2 2022-02-22 11:12:19.310 error Error: All configured authentication methods failed javascript.2 2022-02-22 11:12:19.308 error An error happened which is most likely from one of your scripts, but the originating script could not be detected. -
@thomas-braun said in .sh Skript starten:
@homecineplexx sagte in .sh Skript starten:
aber was genau sagt das aus??
Das sagt aus, dass es nicht sauber installiert ist.
Sauber sähe es so aus:
echad@chet:/opt/iobroker $ npm ls node-ssh iobroker.inst@3.0.0 /opt/iobroker └─┬ iobroker.javascript@5.2.21 └── node-ssh@12.0.3so, das hätte ich nun richtig gestellt:
chris@ioBroker:/opt/iobroker$ npm ls node-ssh iobroker.inst@3.0.0 /opt/iobroker ├─┬ iobroker.javascript@5.2.21 │ └── node-ssh@12.0.3 deduped └── node-ssh@12.0.3allerdings das Anmelden geht noch immer nicht:
javascript.2 2022-02-22 11:12:19.312 error Error: All configured authentication methods failed at doNextAuth (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/client.js:803:21) at tryNextAuth (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/client.js:993:7) at USERAUTH_FAILURE (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/client.js:373:11) at 51 (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/protocol/handlers.misc.js:337:16) at Protocol.onPayload (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/protocol/Protocol.js:2025:10) at AESGCMDecipherNative.decrypt (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/protocol/crypto.js:987:26) at Protocol.parsePacket [as _parse] (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/protocol/Protocol.js:1994:25) at Protocol.parse (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/protocol/Protocol.js:293:16) at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/ssh2/lib/client.js:713:21) at Socket.emit (events.js:400:28) at Socket.emit (domain.js:475:12) at addChunk (internal/streams/readable.js:293:12) at readableAddChunk (internal/streams/readable.js:267:9) at Socket.Readable.push (internal/streams/readable.js:206:10) at TCP.onStreamRead (internal/stream_base_commons.js:188:23) javascript.2 2022-02-22 11:12:19.310 error Error: All configured authentication methods failed javascript.2 2022-02-22 11:12:19.308 error An error happened which is most likely from one of your scripts, but the originating script could not be detected.DANKE an alle helfenden Hände!!!
-
DANKE an alle helfenden Hände!!!
@homecineplexx Geht es jetzt oder wofür der Dank?
Dein Installations Pfad für das SSH Modul ist nicht ganz richtig. Vergleiche nochmal genau mit dem von Thomas Braun.
Kannst du dich denn vom iobroker Rechner überhaupt per SSH mit dem anderen Rechner verbinden?
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden