NEWS
UNSOLVED error : Datei auf Netzlaufwerk öffnen
-
schade
-
@falke69 nee - leider nicht - kommt selbe meldung
-
Also das ist seltsam, mit dem Test von @AlCalzone scheint irgend etwas nicht zu stimmen (funktioniert allerdings unter iob linux!), mit fs.readFileSync() kann ich die Datei lesen, fs.accessSync() scheitert im gleichen Skript
// Dateiname: test.js const fs = require('fs'); //const path = '//192.168.178.3/Docker/unix-data/test.txt'; // <== funktioniert als path, kein Zugriff const path = 'X:\\unix-data\\test.txt'; var test = fs.readFileSync(path); log(test.toString()); try { fs.accessSync(path, fs.constants.R_OK | fs.constants.W_OK); console.log('can read/write'); } catch (err) { console.error('no access!'); } 15:23:52.889 info javascript.0 (2564) Start javascript script.js.common.Skript_1 15:23:52.924 info javascript.0 (2564) script.js.common.Skript_1: a b c 15:23:52.924 error javascript.0 (2564) script.js.common.Skript_1: no access! 15:23:52.924 info javascript.0 (2564) script.js.common.Skript_1: registered 0 subscriptions and 0 schedules
Es scheint also kein generelles Zugriffsproblem zu sein. Jetzt werde ich aber noch später exceljs installieren
-
@fastfoot du gehst aber direkt über Samba an den Share ohne über z:/ o.ä.?
-
@fastfoot sagte in error : Datei auf Netzlaufwerk öffnen:
Es scheint also kein generelles Zugriffsproblem zu sein. Jetzt werde ich aber noch später exceljs installieren
Später ist schon vorbei, exceljs funktioniert hier, trotz aller vorher geschilderten Umstände
const Excel = require('exceljs'); const workbook = new Excel.Workbook(); workbook .xlsx .readFile('X://unix-data/test.xlsm') .then(() => { console.log('data was read'); }) .catch((err) => { console.log("err", err); }); 15:35:02.284 info javascript.0 (2564) Start javascript script.js.common.test 15:35:02.288 info javascript.0 (2564) script.js.common.test: registered 0 subscriptions and 0 schedules 15:35:02.409 info javascript.0 (2564) script.js.common.test: data was read
-
@fastfoot sagte in error : Datei auf Netzlaufwerk öffnen:
fs.accessSync() scheitert im gleichen Skript
Wenn ich mir den Screenshot über deinem Post ansehe, bekomme ich eine Vermutung, warum. Im JS-Adapter ist der Zugriff aufs Dateisystem gesandboxt. Möglicherweise ist mit accessSync in dieser etwas nicht in Ordnung.
@bahnuhr sagte in error : Datei auf Netzlaufwerk öffnen:
net use q: \SYNOLOGY\Media
Probier es bitte mal unter Angabe des Users und Passwort (das Share benötigt doch einen, oder?):
net use q: \\SYNOLOGY\Media password /user:username
-
@Homoran sagte in error : Datei auf Netzlaufwerk öffnen:
@fastfoot du gehst aber direkt über Samba an den Share ohne über z:/ o.ä.?
es funktioniert beides, wie im Skript gezeigt
-
@AlCalzone sagte in error : Datei auf Netzlaufwerk öffnen:
net use q: \SYNOLOGY\Media password /user:username
So, im terminal klappt es nun auch bei mir.
Aber wie gebe ich jetzt den Befehl "net use" in einem Script an.
-
@bahnuhr ich habe mal @Stabilostick gefragt, ob man das irgendwie automatisch in der ioBroker-Umgebung machen kann, sodass das Laufwerk in ioBroker auch verfügbar ist.
-
@AlCalzone sagte in error : Datei auf Netzlaufwerk öffnen:
@bahnuhr ich habe mal @Stabilostick gefragt, ob man das irgendwie automatisch in der ioBroker-Umgebung machen kann, sodass das Laufwerk in ioBroker auch verfügbar ist.
Danke dir.
Aber nochmal:
Aber wie gebe ich jetzt den Befehl "net use" in einem Script an. -
@bahnuhr probier mal:
damit konnte ich eine datei direkt auf mein "D" laufwerk kopieren
exec('net use z: \\\\192.168.178.36\\test passwort/user:user & copy z:\\ff.txt d: & net use z: /delete', function (error, result, stderr) { console.log(result); });
-
@alle, darf ich meine Hilfe anbieten?
Ich habe jetzt nicht alles durchgelesen, aber ich würde gerne per TeamViewer oder ähnlichem helfen. Dann die Lösung hier für alle.
Wer mag? PN?
Viele Grüße
Thomas -
@Stabilostick eigentlich sollte @bahnuhr das mit dir machen - weiß nicht ob der online ist
falls du aber gleich etwas machen willst , können wir auf meinem test server alles durchgehen, damit du auf dem laufenden bist
-
ja ich bin da.
Schreibe an stabilo eine pn -
Hi, wir haben es herausbekommen! So geht es (Windows 10 Pro vorausgesetzt):
Hinweis: Das Vorgehen hier basiert auf einem ioBroker-System, dass nicht mit dem neuen Windows-Installer aufgesetzt wurde. Beim neuen Installer ist beim Service bereits ein User hinterlegt. Wenn da Fragen auftreten, dann bitte an @Stabilostick wenden.
- In der Windows Benutzerverwaltung (ist in der "Computerverwaltung" enthalten) - wenn noch nicht vorhanden - einen Windows Benutzer zur Ausführung des ioBroker-Services einrichten:
- Anschließend in der Diensteverwaltung (services.msc) dem "iobroker"-Service diesen Windows User zuordnen:
Der User erhält bei der ersten Zuordnung das Recht, sich auch als Dienst anzumelden.
Ab jetzt läuft ioBroker, wenn er als Dienst gestartet wird, mit diesem Benutzerkonto und nicht mehr als System-User. Synology kannte dieses System-/Computerkonto nicht und hatte deshalb den Zugriff verhindert.
-
Natürlich muss dieser Benutzer mit dem gleichen Benutzernamen und dem gleichen Kennwort auch auf der Synology eingerichtet und für die Freigabe berechtigt sein!
-
Jetzt kann z.B. mit JavaScript direkt auf den Share zugegriffen werden.
... function main() { workbook.xlsx.readFile("\\\\Synology\\Computer\\Pool\\Messungen.xlsm") // direkter Zugriff //workbook.xlsx.readFile("\\\\192.168.243.5\\Computer\\Pool\\Messungen.xlsm") // alternativer Zugriff über IP .then(function() { var worksheet = workbook.getWorksheet('Messungen'); ...
PS: Hier nicht die Laufwerksbuchstaben verwenden sondern direkt zugreifen.
Wir hoffen, das hilft allen, die später noch auf dieses Problemchen stoßen.
Viele Grüße
(Text kommt primär von stabilo...)