PeterPawn / YourFritz

dynamic package management for AVM routers
GNU General Public License v2.0
219 stars 63 forks source link

MacOS 10.15.2 - stats #25

Closed vdcore closed 4 years ago

vdcore commented 4 years ago

Hello,

i using MacOS und the "stat -c %s" don't work (show the size in bytes).

VoidBookPro:eva_tools Username$ stat -c %d 7490_07.12-freetz-master-20191207.image.in-memory 
stat: illegal option -- c
usage: stat [-FlLnqrsx] [-f format] [-t timefmt] [file ...]

it is possible alternate to use "stats -f %z" for MacOS?

VoidBookPro:eva_tools Username$ stat -f %z 7490_07.12-freetz-master-20191207.image.in-memory 
37626112

or a software switch for Mac User.

LG VoiD

PeterPawn commented 4 years ago

Thx for your comment.

I've replaced stat in another place already with wc: https://github.com/PeterPawn/YourFritz/commit/936cab2d0ac31aad1b36b9bc568fed2a97f77312#diff-ce6bfc866972a4907928ac4290795aeb

To handle the differences between operating systems with different commands and/or options, is something I want to avoid, if there's another possibility.

I would replace the commands in the scripts (which were proof-of-concepts only), if I would know for sure, that this substitution solves all problems and next problem isn't awaiting already 'round the corner.

Could you pls try to replace the stat command in question with a wc -c < input_file and continue checking for further problems? Error handling wasn't an important aspect / intention while writing this script / these scripts.

vdcore commented 4 years ago
VoidBookPro:eva_tools voidcore$ stat -f %z 7490_07.12-freetz-master-20191207.image.in-memory 
37626112
VoidBookPro:eva_tools voidcore$ wc -c < 7490_07.12-freetz-master-20191207.image.in-memory 
 37626112

Yes, it's the same, thx for fix that =)

Good Job!

PeterPawn commented 4 years ago

I want to sort out this again, before I'll change anything: After the (single) change from using stat to using wc, the eva_to_memory script was able to run without further problems on your machine with MacOS X 10.15.2? Or were there additional "challenges", e.g. missing commands, which had to be installed first?

PeterPawn commented 4 years ago

OK, I've already changed some remaining stat calls to use wc now ... but my question still stands: Were there any other (important) problems using the eva_tools scripts with MacOS?

vdcore commented 4 years ago

same problem with "nc" on Debian buster or MacOS when start the script it stopt (waiting ??) ... ctrl + c stop it and script continue.

VoidBookPro:eva_tools voidcore$ nc 2>/dev/null
^C
VoidBookPro:eva_tools voidcore$

what's doing ... without parameters..

VoidBookPro:eva_tools voidcore$ nc
Cmd line: 

looks like waiting for input.... if i try "nc -c 2>/dev/null" still work (error missing hostname piped to dev/null)

It's only test (no reboot fritzbox currently) But script success all checks ..

VoidBookPro:eva_tools voidcore$ sh eva_to_memory 7490_07.12-freetz-master-20191207.image.in-memory 
Login failed.

Ps: in deutsch würde es mir leichter fallen zu antworten :P Sorry

Wenn ich dabei helfen Kann das script MacOS tauglich zu machen gern fragen :-)

PeterPawn commented 4 years ago

Na dann einfach weiter in Deutsch, ich hatte mich nur angepaßt.

Was sagt denn nc --help bzw. nc --version (oder Äquivalente, wenn da nur die kurzen Optionen unterstützt werden) auf diesem System?

So in vollem Umfang will ich das Zeug aber eigentlich auch nicht auf POSIX-Kompatibilität trimmen, weil meine eigene Idee der Entwicklung eher in Richtung C# und PowerShell Core (https://github.com/PowerShell/PowerShell) geht (im Branch "eva", wobei ich gerade gesehen habe, daß ich da auf GitHub zuletzt vor 15 Monaten etwas eingecheckt habe - ich arbeite meistens mit meinem lokalen Git-Server).

Vielleicht willst Du ja mal PS Core 6 auf dem Mac installieren und schauen, ob die PowerShell-Skripte aus diesem Verzeichnis dort funktionieren? Ich sage aber gleich an, daß ich das auch nicht getestet habe ... die (neuen) Versionen direkt für die Verwendung mit PS Core (und .NET Core) sollten eigentlich längst fertig sein; nur fehlt mir auch dafür die Zeit.

Aber das macht es nicht sinnvoller in meinen Augen, die verbleibende in die alten Geschichten zu stecken ... irgendeine Umgehungslösung (von einer virtuellen Maschine mit "echtem Linux" bis zum Live-Linux vom USB-Stick) findet sich eigentlich immer und sollte auch mit neueren Macs noch funktionieren.

Ich habe aber schon mit Problemen gerechnet beim MacOS ... deshalb ja auch mein Erstaunen, daß ein Ersetzen von stat bereits ausreichend sein soll.

Ich helfe Dir also gerne, das irgendwie so anzupassen, daß es auch auf Deinem Mac läuft ... ob daraus dann aber Änderungen hier im Repo resultieren, kann (und will) ich Dir nicht versprechen. Vielleicht ist ein Fork mit einer "Mac-Version" sogar sinnvoller ... vor allem, weil mir inzwischen die Hardware dafür fehlt und ich immer auf Hilfe angewiesen wäre.

Wobei dann vermutlich das IPPF wieder die bessere Wahl ist, wenn man die (Bash-)Skripte in einer gemeinsamen Anstrengung mal auf MacOS-Kompatibilität trimmen will ... spätestens bei weiteren "round-trips" sind dann auch weitere Augenpaare und Ideengeber/Tester ein Gewinn.

vdcore commented 4 years ago

Ich selbst finde die Idee mit dem Port auf .net Core interessant. Ich selbst programmiere kleine Tools in .net aber es ist jetzt nicht so das ich 100 mal freetz updaten will. Dennoch finde ich dein Projekt interessant das man via Eva Tool direkt vom Mac ohne irgendeine virtualen Kiste oder Boot Stick direkt mal Flashen kann =)

Die nc Version etc reiche ich nach. Mac gerade besetzt =)

vdcore commented 4 years ago

VoidBookPro:~ voidcore$ nc -V netcat (The GNU Netcat) 0.7.1 Copyright (C) 2002 - 2003 Giovanni Giacobbi

PeterPawn commented 4 years ago

Ich versuche ja schon, das "nc"-Kommando möglichst einfach aufzurufen, weil sich die Optionen zwischen der GNU- und der BSD-Version bekanntermaßen unterscheiden (wobei es schon witzig ist, wenn MacOS als BSD-Abkömmling hier die GNU-Version verwendet).

Bisher habe ich auch immer betont (z.B. hier: https://www.ip-phone-forum.de/threads/fritz-box-7580-firmware-153-06-90-telnet-service-freischalten-geht-auch-f%C3%BCr-7560-und-7590.296678/), daß die OpenBSD-Version von "netcat" benötigt wird. Warum ist das nun so und kann man das ändern?

Jein ... später wird dann "nc" doch noch einmal mit der Option "-d" aufgerufen, damit es sich bei EOF auf der Standardeingabe nicht gleich wieder beendet, weil dann ein Empfang von Daten im FTP-Kontext nicht funktioniert, wo erst das Öffnen der Verbindung von der Gegenseite angestoßen werden muß per Kommando im Control-Channel.

Aber die GNU-Version kennt dafür keine passende Option ... es ist also auch nicht damit getan, daß man bei dieser Version einfach eine andere Option verwendet - das Programm ist dafür schlicht nicht brauchbar, zumindest nicht beim derzeitigen Aufbau des Skripts.

Es führt also (wie gesagt im derzeitigen Zustand der Skript-Dateien, denn man könnte es mit einem zusätzlichen FIFO für STDIN dieses nc-Aufrufs auch erreichen, daß da nicht sofort EOF signalisiert wird bei einem Leseversuch - nur beißt sich ein "Umschreiben" mit meiner Prämisse, da keinen größeren Aufwand mehr hineinzustecken) kein Weg an der Verwendung der BSD-Version von netcat vorbei - keine Ahnung, ob/wie Du die jetzt auf Dein MacOS kriegst, aber das wäre in meinen Augen für MacOS ohnehin die naheliegendere Version.

PeterPawn commented 4 years ago

Ich habe mal die Erkennung der passenden netcat-Version etwas ausgebaut und die Fehlermeldungen genauer verfaßt. An der Notwendigkeit der BSD-Version ändert das aber nichts.

vdcore commented 4 years ago

Habe mich jetzt etwas mit dem Thema nc für MacOS befasst, die version ist steinalt und selbst bei Homebrew gibt es nur die 0.7.1 (welche die besagten features von der bsd version nicht hat).

werde mich die kommenden Tage mal mit brew befassen, evtl ist es möglich sich die netcat-openbsd selbst zu kompilieren.

sobald ich das netcat problem gelöst habe probiere ich das script mal live an meiner fritzbox aus. =) derzeit muss VirtualBox herhalten -.-

PeterPawn commented 4 years ago

Ich habe mir noch einmal die Änderungen bei einem anderen Skript angesehen, die notwendig waren, um dieses (https://github.com/PeterPawn/YourFritz/commits/master/juis/juis_check) mit MacOS kompatibel zu bekommen.

Sollte es in MacOS immer noch kein procfs geben, knallt es dort (absehbar) als nächstes.

Das sind zwar alles keine unüberwindbaren Hindernisse (schließlich nutzt auch juis_check entweder eine bash-Shell oder netcat (da ist es auch egal, welcher "Dialekt" das wäre), um die SOAP- bzw. HTTP-Kommunikation nachzubilden und das sollte auch unter MacOS arbeiten können), aber das "wenig Aufwand in Altes stecken" kommt dabei doch deutlich unter die Räder.

Ich würde also vermutlich doch eher "dankend abwinken", wenn es darum geht, die vier Skripte (die ich hier noch einmal geändert hatte: https://github.com/PeterPawn/YourFritz/commit/e7b8d0a30e6424d44d3b264db85a66a16bf703d2) auf Kompatibilität mit MacOS zu trimmen - es lohnt sich in meinen Augen nicht.

Ich will ja eigentlich mit der PS-Version (bei Verfügbarkeit von PS Core auf den relevanten Plattformen) davon weg, daß es unterschiedliche Skript-Dateien und Beschreibungen für Windows-Benutzer und "andere" gibt.

Nur da, wo es darauf ankommt, daß etwas auch auf der FRITZ!Box selbst arbeiten kann (z.B. eben beim "juis_check" oder beim Signieren/Prüfen von Images), setze ich weiterhin auf Shell-Programmierung, weil es "PS Core for FRITZ!OS" wohl nicht so schnell geben wird (dazu sind die Geräte auch zu schwach).

Ich will also Deine eigenen Ambitionen und ggf. vorhandene "Neugierde" nicht ausbremsen, aber das lohnt in meinen Augen den Aufwand nicht - wenn ich es richtig lese, kannst Du mit VirtualBox ja mit dem derzeitigen Stand arbeiten.

vdcore commented 4 years ago

korrekt, aktuell muss ich den Umweg über virutalbox nehmen (Debian buster).

Sehe ich das richtig das für die PS Core Geschichte alles mit .net programmiert wird? Mir selbst gefällt die Sache mit .net Core weiß es halt überall läuft (bis auf ein paar ausnahmen, Winforms etc.)

Gibt es evtl schon ein Projekt wo man mit arbeiten kann? Bzw. Testen und erweitern. Über den konkreten Ablauf den flashen kenn ich mich bei Fritz nicht aus, aber um so mehr man sich damit befasst desto interessanter wird es ja.

Falls es etwas gibt einfach bescheid geben, evtl. kann man sich über ein andere Plattform/PN besser unterhalten als hier über ein "issues" thread =)

Schönen Feiertage und danke für die bisherigen Infos.

vdcore commented 4 years ago
VoidBookPro:~ voidcore$ pwsh 
PowerShell 6.2.3
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/pscore6-docs
Type 'help' to get help.

PS /Users/voidcore> 

Insofern ich bei der Entwicklung für MacOS helfen kann bitte zögere mich. Würde mich freuen helfen zu können ;-)

PeterPawn commented 4 years ago

Danke für das Angebot, das ist das erste überhaupt, seit ich das hier aus der Taufe gehoben habe.

Im Moment besteht ein gewisses Ungleichgewicht zwischen dem hier im GitHub veröffentlichten Stand und dem, was sich auf meinem lokalen Git-Server in vielen verschiedenen Branches an Konzept-Tests und (teilweise auch nur angefangenen) Versuchen so angesammelt hat.

Ich will mal sehen, ob ich es in absehbaren Zeiten schaffe, das etwas zu systematisieren und das, was zur Veröffentlichung und Weiterentwicklung schon taugt, dann auch als Beta in Branches hier im GitHub einzuchecken.

Nur wird das dieses Jahr ziemlich sicher nichts mehr ... das mit dem "Schöne Feiertage" nehme ich also wörtlich und melde mich dann mal per E-Mail unter der Adresse aus Deinen GitHub-Account - aber erst "nächstes Jahr".

Das hier mache ich dann mal zu ... wenn Du nichts weiter hättest (ansonsten steht das immer in meinem Dashboard ganz oben). Wenn Dir noch etwas einfällt, kannst Du auch gerne wieder neu eröffnen oder auch im geschlossenen Zustand weitere Nachrichten hinterlassen.