NEWS
iob diag - Skript
-
@homoran sagte in iob diag - Skript:
Bisher hat iob fix nur die Berechtigungen geradegebogen. das wurde auch jahrelang so kommuniziert.
Wobei das ja auch nicht stimmt. setcaps und einige Pakete werden auch (neu)installiert. Ein bischen mehr als nur die Berechtigungen macht iob fix bzw. der Installer auch schon. Das nachinstallieren von 'cmake' ist aus Sicht der Systemsicherheit eigentlich auch ein Alptraum. Damit gibst du z. B. einem Eindringling ein weiteres Werkzeug zum bauen von Schadcode an die Hand.
Das würde dir jeder Sysadmin rechts und links um die Ohren hauen. Zu recht.
-
@thomas-braun sagte in iob diag - Skript:
@homoran sagte in iob diag - Skript:
aber da es nix mit iob zu tun hat
Nein, rein technisch natürlich nicht. Wird der Zielgruppe aber vermutlich relativ schnuppe sein.
richtig, sehe ich auch so.
@feuersturm sagte in iob diag - Skript:
Ich würde argumentieren, das es ein Helferlein für ioBroker ist, um das Grundgerüst von iobroker zu reparieren
wo fängt das an und wo hört es auf?
Bitte icht missverstehen!
für die Zielgruppe ist so etwas Gold wert!
es wir nur sehr wenige geben, due in Linux so frei jonglieren können wie Thomas, und immer noch wenige, due sich da rantrauen, die HowTos nachzubauen.So ganz abwegig war daher der
iob linuxfix
auch nicht, wenn ich da per Knopfdruck "nur" die Quellen auf den neuen Namen schreiben muss, ein update und ein full-upgrade fahren, und alle sind up to date und glücklich. -
-
@homoran sagte in iob diag - Skript:
So ganz abwegig war daher der iob linuxfix auch nicht,
Das wird es ganz bestimmt NICHT geben (jedenfalls nicht von mir). Wenn das so einfach wäre, dann würde Debian das ganz sicher in ein Upgrade-Skript 'ab Werk' gießen. Ubuntu hat(te?) da mal was, das Ding hatte aber so viele 'Wenns' und 'Danns' und 'Dann doch nicht' - Einschränkungen und hat nur bei idealen Voraussetzungen richtig durchgehend funktioniert, das willst du nicht coden.
-
@andre said in iob diag - Skript:
Bin ich der Einzige der es irgendwie bedenklich findet wenn ein Diagnose-Script auch gefundene Probleme korrigiert statt nur darüber zu informieren? Meines Erachtens sollte ein Diagnosescript 100% safe sein. Also ausschließlich Informationen auslesen.
Wo wäre dann sonst der Unterschied zum Fixer-Script? Dann können wir die Diag-Ausgabe doch eigentlich auch direkt in den Fixer einbauen, oder sehe ich das falsch?@apollon77 @foxriver76 @AlCalzone @Bluefox
Habt ihr eine Meinung dazu? Sollte das Thema vielleicht auf die Dev-Meeting-Liste? Ich denke das ist in jedem Fall zumindest diskussionswürdig.MfG,
AndréNein
Hab ich auch schon angemerkt.
Ich möchte ein diagnosescript starten und dabei sicher sein dass absolut nichts verändert wird. -
Hallo,
da das hier nach einer internen Diskussion klingt, weiß ich nicht ob ich mich hier als Anwender, aber auch Programmierer mal kurz mit einklinken darf.
Vorab, ich gehöre nicht zu der Fraktion die alles und ständig probieren und experimentieren muss. Ich selbst habe fast 20 Jahre für Windows professionelle Software für den Finanzbereich programmiert.
Und ähnlich wie hier gab es ein(e) Anwendung(spaket) (hier ist es der ioBroker) und dazu Laufzeitkomponenten (hier ist es nodejs) und bei mir damals VB, .NET, ACCESS, DAO und ADO.
Aus eigener Supporterfahrung kann ich sagen, der Anwender hat nie was gemacht wenn etwas nicht mehr geht. Aber er hat erwartet das man es wieder richtet. Das war oftmals zeit- und nervenraubend und hat sich offenbar bis heute nicht geändert.
Hier ist es für meine Begriffe exakt so und ihr wendet derartig viel Zeit dafür auf, dass jedes Helferlein was das zu richten vermag, für euch "GOLD" ist. Auch ich habe damals ein Programm geschrieben, was versucht hat alle schrägen Installationen zu richten. Das hat zu 90% auch funktioniert, der Rest ging nur durch Neuinstallation.
Egal wie. So ein Helferlein ist wichtig. Denn es spart euch letztlich Zeit und zeigt dem Anwender, dass da schnell und einfach geholfen wird. Ja ihr helft jetzt auch schnell und professionell, aber mit viel Zeitaufwand.
Fazit. Das Skript, egal wie es aufgerufen und heißen wird, es wird allen helfen. Ihr macht absolut klasse Arbeit. Dafür Danke.
Ro75.
-
@mcm57 sagte in iob diag - Skript:
Ich möchte ein diagnosescript starten und dabei sicher sein dass absolut nichts verändert wird.
Hatten wir schon...
Ist eine Beta-Version, der Code kann da easy rausgezogen werden und in ein eigenes Skript mit eigenem Aufruf gepackt werden.
Ich hatte nur keine Lust, Zeit und Laune das in ein eigenes Repo zu packen, weil ich einige wenigen Dinge bereit zuvor im Hauptskript ermittelt habe.
Der Fix wird nur ausgeführt, wenn man auf Rückfrage die Tastey
drückt.Und absolut nichts wird auch heute schon nicht geändert. Es wird immer ein Symlink von nodejs auf node gesetzt. Sonst funktioniert der Check auf schiefe Installationen nicht.
-
@thomas-braun sagte in iob diag - Skript:
iob nodefix
vielleicht?Zur Diskussion über den Aufruf folgende Idee:
Diagnose
iob diag
> zur Erstellung von Diagnosedaten (eventuell als standard nur das summary, bzw. die nötigsten Infos)
ergänzend dann zum Beispiel:iob diag full
für die komplette Ausgabe? (Weiß nicht ob das konkret Sinn ergibt, ist also eher zur Darstellung der Struktur des Kommandos gedacht)Fixer
iob fix
> zum Prüfen und Fixen der eigentlichen ioBroker Installation
iob fix node
> zum Prüfen und Fixen von Node
(iob fix system
> zum Prüfen und Fixen von weiteren Sytemvorraussetzungen?)
usw.Also praktisch den bestehenden Fixer mit einem weiteren Parameter aufbohren.
Meines Erachtens ist es so am deutlichsten und fix und diag gut voneinander getrennt.
Ich halte nicht viel davon für die gleichen Funktionen (in diesem Fall das Fixen von was auch immer) jeweils ein eigenes iob-Kommando zu kreieren.Wie gesagt nur eine Idee.
MfG,
André -
@andre sagte in iob diag - Skript:
iob fix node > zum Prüfen und Fixen von Node
mag sein, dass ich da ein wenig kleinlich mit der Semantik bin, aber iob nodefix ist für mich "richtiger" als iob fix node.
letzteres impliziert für mich dass der iobroker die node Installation fixed. ersteres wie bereits gesagt, dass ein nodefix stattfindet.
Auch nur als Gedanke!
Dass es im Moment zum testen noch im diag verankert ist, da dies schneller umzusetzen war/ist, wurde auch bereits mehrfach geschrieben.
Später wird es ausgegliedert. -
Ich habe den 'umstrittenen' Code aus 'iob diag' herausgenommen und in ein eigenes Skript 'iob_node_update' überführt. Dafür mach ich aber noch einen separaten Thread auf.
-
@thomas-braun sagte in iob diag - Skript:
Dafür mach ich aber noch einen separaten Thread auf.
erstmal in Tester?
oder gibbet nix zum Testen? -
Doch, testen geht hier:
https://forum.iobroker.net/topic/68035/iob-node-fix-skript -
Eine Frage zu deinem Diag-Skript. Die ausstehenden OS Updates wird ja folgendermaßen ermittelt:
echo -e "\033[34;107m*** OS-Repositories and Updates ***\033[0m"; sudo apt-get update 1>/dev/null && sudo apt-get update APT=$(apt-get upgrade -s |grep -P '^\d+ upgraded'|cut -d" " -f1) echo -e "Pending Updates: $APT";
Warum wird der Befehl 'sudo apt-get update' zweimal ausgeführt?
Ich wollte im ioBroker mittels Javascript die Anzahl der OS Updates ermitteln.
exec('sudo apt-get update && apt-get upgrade -s', function (error, stdout, stderr) { let result = stdout.match(/[0-9]+ aktualisiert/g); if (result) { let result2 = result[0].split(' '); console.log('OS Updates: ' + String(result2[0])); } });
Der Code funktioniert auch mit 1x 'sudo apt-get update'. Übersehe ich da was?
-
@pk68 sagte in iob diag - Skript:
Warum wird der Befehl 'sudo apt-get update' zweimal ausgeführt?
Hat rein optische Gründe. Beim ersten Aufruf hast du da (mehr) GET-Meldungen drin. Die wollte ich ausblenden.
€dit: Deswegen landet die Ausgabe auch im Null-device.
-
Ok, danke.
-
Kann mir jemand mit einem Docker mal die aktuelle Ausgabe von
iob diag
posten? Danke schön!
-
@thomas-braun sagte in iob diag - Skript:
Kann mir jemand mit einem Docker mal die aktuelle Ausgabe von
Ist eine kleine Test-Installation. Hoffe, das reicht.
Skript v.2023-10-10 *** BASE SYSTEM *** Hardware Vendor : Intel(R) Client Systems Kernel : x86_64 Userland : amd64 Docker : v9.0.1 Virtualization : Docker Kernel : x86_64 Userland : amd64 Systemuptime and Load: 21:20:37 up 16 days, 1:21, 0 user, load average: 0.58, 0.76, 0.64 CPU threads: 4 *** Time and Time Zones *** Thu Oct 26 19:20:37 UTC 2023 Thu Oct 26 21:20:37 CEST 2023 CEST +0200 Etc/UTC *** User and Groups *** root /root root *** X-Server-Setup *** X-Server: false Desktop: Terminal: *** MEMORY *** total used free shared buff/cache available Mem: 16G 5.9G 434M 108M 10G 10G Swap: 4.3G 16M 4.3G Total: 20G 6.0G 4.7G 15718 M total memory 5665 M used memory 4923 M active memory 8757 M inactive memory 414 M free memory 1187 M buffer memory 8783 M swap cache 4095 M total swap 16 M used swap 4079 M free swap *** FILESYSTEM *** Filesystem Type Size Used Avail Use% Mounted on overlay overlay 63G 20G 41G 33% / tmpfs tmpfs 64M 0 64M 0% /dev shm tmpfs 64M 0 64M 0% /dev/shm /dev/nvme0n1p3 ext4 63G 14G 47G 23% /opt/iobroker /dev/nvme0n1p2 ext4 63G 20G 41G 33% /etc/hosts tmpfs tmpfs 7.7G 0 7.7G 0% /proc/acpi tmpfs tmpfs 7.7G 0 7.7G 0% /proc/scsi tmpfs tmpfs 7.7G 0 7.7G 0% /sys/firmware Messages concerning ext4 filesystem in dmesg: dmesg: read kernel buffer failed: Operation not permitted Show mounted filesystems \(real ones only\): TARGET SOURCE FSTYPE OPTIONS /opt/iobroker /dev/nvme0n1p3[/iobroker2] ext4 rw,relatime /opt/userscripts /dev/nvme0n1p3[/userscripts] ext4 rw,relatime /etc/resolv.conf /dev/nvme0n1p2[/var/lib/docker/containers/1692bf02133947c23fc1042a4cdfa5caf0fcc3ece1c5f76e03a4a84b7cf3d709/resolv.conf] ext4 rw,relatime /etc/hostname /dev/nvme0n1p2[/var/lib/docker/containers/1692bf02133947c23fc1042a4cdfa5caf0fcc3ece1c5f76e03a4a84b7cf3d709/hostname] ext4 rw,relatime /etc/hosts /dev/nvme0n1p2[/var/lib/docker/containers/1692bf02133947c23fc1042a4cdfa5caf0fcc3ece1c5f76e03a4a84b7cf3d709/hosts] ext4 rw,relatime Files in neuralgic directories: /var: 16M /var/ 13M /var/lib/dpkg 13M /var/lib 12M /var/lib/dpkg/info 1.9M /var/cache /opt/iobroker/backups: 1.3M /opt/iobroker/backups/ /opt/iobroker/iobroker-data: 34M /opt/iobroker/iobroker-data/ 14M /opt/iobroker/iobroker-data/files 13M /opt/iobroker/iobroker-data/files/admin.admin/custom/static/js 13M /opt/iobroker/iobroker-data/files/admin.admin/custom/static 13M /opt/iobroker/iobroker-data/files/admin.admin/custom The five largest files in iobroker-data are: 20M /opt/iobroker/iobroker-data/objects.jsonl 6.3M /opt/iobroker/iobroker-data/files/admin.admin/custom/static/js/vendors-node_modules_iobroker_adapter-react-v5_assets_devices_parseNames_js-node_modules_iobr-99c23e.847b8ad9.chunk.js.map 2.8M /opt/iobroker/iobroker-data/files/admin.admin/custom/static/js/vendors-node_modules_iobroker_adapter-react-v5_assets_devices_parseNames_js-node_modules_iobr-99c23e.847b8ad9.chunk.js 1.6M /opt/iobroker/iobroker-data/files/admin.admin/custom/static/js/vendors-node_modules_mui_material_Accordion_index_js-node_modules_mui_material_AccordionDetai-57e02d.0886b730.chunk.js.map 652K /opt/iobroker/iobroker-data/files/admin.admin/custom/static/js/vendors-node_modules_mui_material_index_js.40e01f69.chunk.js.map USB-Devices by-id: USB-Sticks - Avoid direct links to /dev/* in your adapter setups, please always prefer the links 'by-id': find: '/dev/serial/by-id/': No such file or directory *** NodeJS-Installation *** /usr/bin/nodejs v18.18.2 /usr/bin/node v18.18.2 /usr/bin/npm 9.8.1 /usr/bin/npx 9.8.1 /usr/bin/corepack 0.19.0 nodejs: Installed: 18.18.2-1nodesource1 Candidate: 18.18.2-1nodesource1 Version table: *** 18.18.2-1nodesource1 100 100 /var/lib/dpkg/status Temp directories causing npm8 problem: 0 No problems detected Errors in npm tree: *** ioBroker-Installation *** ioBroker Status iobroker is running on this host. At least one iobroker host is running. Objects type: redis States type: redis Core adapters versions js-controller: 5.0.14 admin: 6.11.0 javascript: "javascript" not found Adapters from github: 0 Adapter State + system.adapter.admin.0 : admin : iobroker2 - enabled, port: 8081, bind: 0.0.0.0, run as: admin + system.adapter.awtrix-light.0 : awtrix-light : iobroker2 - enabled + system.adapter.backitup.0 : backitup : iobroker2 - enabled + instance is alive Enabled adapters with bindings + system.adapter.admin.0 : admin : iobroker2 - enabled, port: 8081, bind: 0.0.0.0, run as: admin ioBroker-Repositories stable : http://download.iobroker.net/sources-dist.json beta : http://download.iobroker.net/sources-dist-latest.json Active repo(s): stable, beta Installed ioBroker-Instances Used repositories: stable, beta Adapter "admin" : 6.12.0 , installed 6.11.0 [Updatable] Adapter "awtrix-light" : 0.10.0 , installed 0.9.2 [Updatable] Adapter "backitup" : 2.8.7 , installed 2.8.7 Controller "js-controller": 5.0.14 , installed 5.0.14 Objects and States Please stand by - This may take a while Objects: 202 States: 128 *** OS-Repositories and Updates *** Hit:1 http://deb.debian.org/debian bookworm InRelease Hit:2 http://deb.debian.org/debian bookworm-updates InRelease Hit:3 https://repos.influxdata.com/debian stable InRelease Hit:4 http://deb.debian.org/debian-security bookworm-security InRelease Hit:5 https://deb.nodesource.com/node_18.x nodistro InRelease Reading package lists... Pending Updates: 0 *** Listening Ports *** Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name tcp 0 0 127.0.0.11:42087 0.0.0.0:* LISTEN 0 69068993 - tcp6 0 0 :::8081 :::* LISTEN 1000 69072792 - udp 0 0 127.0.0.11:41594 0.0.0.0:* 0 69068992 - *** Log File - Last 25 Lines *** 2023-10-26 21:17:14.559 - info: host.iobroker2 instance system.adapter.admin.0 started with pid 840 2023-10-26 21:17:14.561 - info: host.iobroker2 Delete state "system.host.iobroker2.versions.npmNewestNext" 2023-10-26 21:17:14.562 - info: host.iobroker2 Delete state "system.host.iobroker2.versions.nodeCurrent" 2023-10-26 21:17:14.563 - info: host.iobroker2 Some obsolete host states deleted. 2023-10-26 21:17:15.057 - info: admin.0 (840) starting. Version 6.11.0 in /opt/iobroker/node_modules/iobroker.admin, node: v18.18.2, js-controller: 5.0.14 2023-10-26 21:17:15.072 - info: admin.0 (840) requesting all objects 2023-10-26 21:17:15.251 - info: admin.0 (840) received all objects 2023-10-26 21:17:15.340 - info: admin.0 (840) Request actual repository... 2023-10-26 21:17:15.348 - info: admin.0 (840) socket.io server listening on port 8081 2023-10-26 21:17:15.349 - info: admin.0 (840) http server listening on port 8081 2023-10-26 21:17:15.349 - info: admin.0 (840) Use link "http://127.0.0.1:8081" to configure. 2023-10-26 21:17:15.497 - info: host.iobroker2 Updating repository "stable" under "http://download.iobroker.net/sources-dist.json" 2023-10-26 21:17:15.574 - error: admin.0 (840) Cannot update news: TypeError: newNews.forEach is not a function 2023-10-26 21:17:16.743 - info: host.iobroker2 Updating repository "beta" under "http://download.iobroker.net/sources-dist-latest.json" 2023-10-26 21:17:18.313 - info: admin.0 (840) Repository received successfully. 2023-10-26 21:17:18.581 - info: host.iobroker2 instance system.adapter.backitup.0 started with pid 879 2023-10-26 21:17:19.016 - info: backitup.0 (879) starting. Version 2.8.7 in /opt/iobroker/node_modules/iobroker.backitup, node: v18.18.2, js-controller: 5.0.14 2023-10-26 21:17:19.038 - info: backitup.0 (879) [iobroker] backup will be activated at 02:40 every 1 day(s) 2023-10-26 21:17:19.888 - info: admin.0 (840) ==> Connected system.user.admin from ::ffff:192.168.1.98 2023-10-26 21:17:22.577 - info: host.iobroker2 instance system.adapter.awtrix-light.0 started with pid 894 2023-10-26 21:17:22.998 - info: awtrix-light.0 (894) starting. Version 0.9.2 in /opt/iobroker/node_modules/iobroker.awtrix-light, node: v18.18.2, js-controller: 5.0.14 2023-10-26 21:17:23.028 - info: awtrix-light.0 (894) Starting - connecting to http://192.168.0.111:80/ 2023-10-26 21:17:23.052 - info: awtrix-light.0 (894) error ENETUNREACH from stats: connect ENETUNREACH 192.168.0.111:80 2023-10-26 21:17:44.896 - info: admin.0 (840) <== Disconnect system.user.admin from ::ffff:192.168.1.98 admin 2023-10-26 21:18:04.555 - info: admin.0 (840) ==> Connected system.user.admin from ::ffff:192.168.1.98
======================= SUMMARY ======================= v.2023-10-10 model name : Intel(R) Core(TM) i3-10110U CPU @ 2.10GHz Kernel : x86_64 Userland : amd64 Docker : v9.0.1 Installation: Docker Kernel: x86_64 Userland: amd64 Timezone: Etc/UTC User-ID: 0 X-Server: false Pending OS-Updates: 0 Pending iob updates: 2 Nodejs-Installation: /usr/bin/nodejs v18.18.2 /usr/bin/node v18.18.2 /usr/bin/npm 9.8.1 /usr/bin/npx 9.8.1 /usr/bin/corepack 0.19.0 Recommended versions are nodejs 18.18.2 and npm 9.8.1 Your nodejs installation is correct MEMORY: total used free shared buff/cache available Mem: 16G 6.0G 388M 108M 10G 10G Swap: 4.3G 16M 4.3G Total: 20G 6.0G 4.7G Active iob-Instances: 4 Active repo(s): stable, beta ioBroker Core: js-controller 5.0.14 admin 6.11.0 ioBroker Status: iobroker is running on this host. At least one iobroker host is running. Objects type: redis States type: redis Status admin and web instance: + system.adapter.admin.0 : admin : iobroker2 - enabled, port: 8081, bind: 0.0.0.0, run as: admin Objects: 202 States: 128 Size of iob-Database: 20M /opt/iobroker/iobroker-data/objects.jsonl 404K /opt/iobroker/iobroker-data/states.jsonl =================== END OF SUMMARY ====================
-
@marc-berg sagte in iob diag - Skript:
Ist eine kleine Test-Installation. Hoffe, das reicht.
Ja, ich will nur mal sehen was auf dem Docker nicht funktioniert und das dann ausklammern.
Danke schön!
-
Hallo zusammen,
ich versuche gerade einzugrenzen warum ich nicht von node.js 18.17 auf die 18.18 komme.
Leider bekomme ich das Skript so nicht ausgeführt, weil er das Kennwort für den ioBroker user verlangt.Ich melde mich via. "normal" Account und SSH an. Wechsle dann auf den root, weil der normal Account keine Rechte hat und führe das Skript wie folgt aus:
root@ioBroker:/home/administrator# sudo --user=iobroker iob diag
Wenn ich es mit dem administrator ausführe, steht dort, dass dieser keine Rechte hat im Namen von iobroker etwas auszuführen.
Was mache ich hier falsch?
Grüße
-
@hc-yami Also wenn du es normal aufgesetzt hast dann sollte sudo für deinen user eingerichtet sein und du kannst das skript normal starten und er fragt nach dem Passwort des users