grüß euch!
im zuge einiger umstellungen bei mir, frage ich mich grade, welche alternativen es zu winconnect unter fhem so gibt?
nicht, dass ich winconnect für schlecht halten würde! das gegenteil ist der fall. allerdings möchte ich mich auch mal nach alternativen umsehen.
bei fhem sind das ja gern auch mal mehrere möglichkeiten und so manche "versteckt" sich auch ganz gern mal vor mir *g*.
konkret also die fragen:
1) wie krieg' ich am einfachsten und sparsamsten, die wichtigsten statistiken von einer windose in mein fhem? (sysstat ist zumindest theoretisch bekannt)
2) wie steuere ich eine windows-programm von fhem aus (start/stop/...) *)
*) ein beispiel der steuerung eines musikplayers von fhem über ein doif (auszug). dies ist foobar2000, der freundlicherweise automatisch startet, wenn man ihm befehle zusendet:
~snip~
([$SELF:cmd_1])
( set littlebastard_winconnect commandhide "C:\Users\xxx\Music\foobar2000\foobar2000.exe" /playpause )
DOELSEIF
~snip~
weitere anwendungsbeispiele wären: eine notifymsg in windows absetzen, oder hier z.b. das abspielen einer mp3 am win-pc (ebenfalls wieder als doif-teil):
~snip~
(
[$SELF:captcha] eq "true"
and
[?doif_tag_nacht:zustand] eq "tag"
)
( set luke7_winconnect showfile C:\Users\xxx\biep1.wav )
( set luke7_winconnect commandhide taskkill /F /IM wmplayer.exe )
DOELSEIF
~snip~
hier wird automatisch der windows mediaplayer aufgerufen und auch wieder beendet.
Moin,
ich nehme da meist eine Kombination aus ssh und powershell. Beispielhaft der Aufruf in FHEM um Virtuelle Maschinen zu stoppen oder zu starten.
"ssh -T user@WindowsPC powershell Invoke-Command -ScriptBlock { Stop-Vm ubuntu -ErrorAction SilentlyContinue}"
Voraussetzung ist die Installation von ssh Server im Windows (https://heinz-otto.blogspot.com/2019/05/windows-von-fhem-aus-steuern.html) (direkt vorhanden, wissen nur die wenigsten)
Aber natürlich kannst Du über ssh auch direkt Deine Beispiele als Befehle absetzen.
Den Remote Zugriff per ssh nehme ich gern im Linux Umfeld und Windows muss da keine Ausnahme machen ;)
Gruß Otto
super ansatz würde ich sagen. ich mag es, wenn schon alles da ist *g*
echt wahr:PS C:\Users\xxx> Get-Service -Name *ssh*
Status Name DisplayName
------ ---- -----------
Stopped ssh-agent OpenSSH Authentication Agent
hatte wieder mal keinen dunst ...
ich kann mir grade ned vorstellen, dass mein befehl dann so einfach in einem doif rausginge? nö, das wär doch zu einfach, gelle?(ssh -T user@WindowsPC powershell Invoke-Command -ScriptBlock {"C:\Users\xxx\Music\foobar2000\foobar2000.exe" /playpause})
Installation Get-WindowsCapability -Online -Name OpenSSH.Server* | Add-WindowsCapability -Online
Get-Service -Name sshd | Set-Service -StartupType Automatic
Get-Service -Name sshd | Start-Service
Dann den public key Zugang für FHEM einrichten, da gibt es viele Möglichkeiten. Du musst "bloß" den public key vom User fhem auf dem FHEM System in die Datei .ssh/authorized_keys des Windows Users übertragen. Du koppelst damit einen User auf System A mit einem User auf System B!
Ich hatte hier mal eine für mich "kompakte" Variante zusammen geschrieben: https://heinz-otto.blogspot.com/2023/01/ssh-zugang-fur-fhem-uber-script.html
Wenn das prinzipiell geht, dann gibt es manchmal noch Tücken (Quotes und Variablen) mit der Übergabe der Kommandozeile, aber Dein Befehl sollte sogar ohne Powershell funktionieren:
("ssh -T user@WindowsPC 'C:\Users\xxx\Music\foobar2000\foobar2000.exe /playpause'")
also wenn da nicht noch was einfacheres kommt, wirds wohl dein ssh werden.
auf jeden fall ist das zukünftige befehle absetzen so wirklich nach meinen geschmack. und es war klar, dass ich mit den umschließenden zeichen blödsinn mach.
deine anleitung muss ich mir allerdings noch ein oder zweimal durch meine 3 gehirnzellen ziehen.
ich weiß ... ist sicher jetzt schon idioten einfach für nicht-klick-bunti-user ... aber man kennt mich ja mittlerweile, nehm ich an *g*.
ginge das ssh-zeugs zur not auch ohne puplic keys? das ganze rennt ja eh nur lokal, also sicherheit muss da nicht unbedingt groß dahinter sein. ja ja, dumme frage ...
auf jeden fall: schon mal jetzt ein fettes dankeschön, für eine scheinbar echt gute alternative!
Zitat von: the ratman am 03 Juli 2023, 15:00:53zur not auch ohne puplic keys
Das ist wirklich die einfachste Variante. Keine Sicherheit kennt ssh nicht, es geht nicht ohne autorisierung. Du müsstest alternativ das Passwort mitgeben und das ist aus meiner Sicht echt aufwendig :).
Das mit dem public key ist immer das gleiche Verfahren, egal ob linux -> linux oder linux -> Windows (sogar windows -> linux und windows -> windows). Das finde ich den großen Vorteil, einmal eingerichtet funktioniert es einfach in alle Richtungen.
Ich schreibe manchmal viel drumherum, weil ich beim Weg ermitteln selbst ein paar Erkenntnisse hatte. Und ich mache immer mal wieder einen neuen Weg.
Die Erklärung ist vielleicht zielgerichteter https://heinz-otto.blogspot.com/2020/09/ssh-mit-public-key.html
deine infos sind sicher gut, verwirren mich aber eher derzeit - x verschiedene anleitungen machts definitiv nicht besser *g* überhaupt, wenn die dann auch noch untereinander verlinken.
dumme fragen für den anfang also:
1) installieren von ssh auf beiden seiten (wenn noch nicht vorhanden) - o.k. - aber brauch' ich auf beiden seiten 'nen ssh-server? eher nein, aber auf welcher seite? was ist dann besser?
2) puplic key auf welcher seite machen? eher unter linux, nehm ich an?
3) puplic key wie zur anderen seite bringen? der muss ja auch irgendwo auf win liegen, oder?
4) neuer puplic key für jedes windows? ich hab ja dann 1 mal linux mit fhem und x mal windows.
5) noch n fettnäpfchen vergessen?
haben wir nix einfacheres?
fhem kriegt seine infos ja von sysstat. ich brauch' also nur was, was befehle von fhem an win sendet.
anders rum kann ichs eh schon mit z.b. webpost: dummes bspl. vom rainmeter weg: LeftMouseUpAction=["#CURRENTPATH#WebPost.exe" "http://192.168.178.8:8083/fhem?cmd.doif_dremel3d45_schalten=set doif_dremel3d45_schalten stop ja"]|[!ToggleMeterGroup "NA"]
Zitat von: the ratman am 03 Juli 2023, 16:12:36haben wir nix einfacheres?
mMn ist ssh das einfachste und universellste :)
- ssh als client ist auf beiden Seiten sowieso vorhanden, auf linux und Windows Standard seit vielen Jahren. Server für Deinen Fall brauchst Du auf Windows, deswegen musst Du ihn dort aktivieren.
- Du erzeugst ein public/private Key Pärchen für den Benutzer fhem, auf dem Linux wo FHEM läuft, das ist ein Befehl. Der Public key wird später auf das System kopiert auf das Du zugreifen willst, deine Windosen.
- Der Ort der Datei, die die Public Keys zur Autorisierung hält, ist normalerweise auf allen Systemen gleich: Pfad .ssh im User Homedir, dort die Datei authorized_keys. Es ist eine Textdatei, jeder Public Key ist dort eine Textzeile:
- Windows: c:\users\willi\.ssh\authorized_keys
- Linux: /home/willi/.ssh/authorized_keys
- Nein, ein user ein key Pärchen.
- Es gibt gar keine :)
Der private key ist Dein Schlüssel, der public Key ist Deine Kennung. Wenn jemand (Dein Windowsbenutzer) sagt: ich kenne den public key und vertraue ihm, dann kannst Du jederzeit mit deinem private key Eintritt erlangen und wie der Windowsbenutzer arbeiten.
5. hast du 'ne ahnung - ich bade in verbindung mit linux normal darin!
fangt ja schon bei solchen problemchen an: wo ist das homedir des users fhem? ich kann mich ned erinnern, eines angelegt zu haben ... von omv aus lässt sich der nicht bearbeiten, also steh' ich schon wieder an *g*
Zitat von: the ratman am 04 Juli 2023, 10:29:51wo ist das homedir des users fhem?
/opt/fhem
Aber in meiner Anleitung musst Du das nicht explizit wissen :)
sag ichs nicht? punkt 5 ...
wissen täte ich schon gern mehr. irgendwann kommt dann nämlich der punkt, wo ichs zumindest ansatzweise kapiere. is immer nur die frage: wann.
gut ... we probier ich nach deiner anleitung mal. ansonsten bleib' ich tatsächlich bei winconnect und hoffe, dass das noch möglichst lange lebt.
so zwischendurch mal *g* danke für deine geduld.
Ziel: Du hast es verstanden und meine Beschreibung wird durch eine solche Aktion besser ;)
Homedir unter linux ermitteln: Eine Möglichkeit: Terminal öffnen und Befehl pwd eingeben. Warum? pwd gibt den aktuellen Pfad zurück und eine Terminalsitzung wird im Homedir begonnen ;)
Wie macht man das in FHEM?
FHEM Kommandozeile und dann Perl Befehl qx verwenden, der gibt die Ausgabe von pwd zurück:
{qx(pwd)}
ja, wenn man's weiß ... ich gehe dann auch gleich mal davon aus, dass ich alles per fhem kommandozeile erledigen kann? das in {qx(blabla-befehl)} zu kopieren, sollte sich sogar für mich machen lassen.
btw - genau das sind die stolpersteine ... wenn ich "pwd" lese, geh' ich von irgendwas fürs passwort aus, nicht, dass ich dort das heimverzeichnis erfahre. das ist genau das an linux, das mich zur verzweiflung bringt, weil ich nicht mal im traum dran denken würde, dass das eine mit dem anderen was zu tun haben könnte.
alternativ, nur, weil ichs wissen will: kann ich als z.b. user root, dem user fhem seinen key generieren lassen, oder muss ich da tatsächlich als user fhem 'rum gurken?
Du willst als User fhem agieren, da musst Du user fhem auch seinen Key erstellen lassen. Aber wie so immer - es ginge auch als user root, ist aber viel umständlicher ;)
Du kannst Dich auch im Terminal zum user fhem machen, so arbeite ich immer:
sudo -su fhem
Ist einfacher als das Vorgehen, welches man häufig im Internet findet: user fhem ein login und passwort spendieren.
Im übrigen ist die Sache mit dem key Pärchen und dem Public Key übertragen keine Hexerei!
- Das key Pärchen erzeugen ist ein Befehl und zwei Dateien stehen danach am richtigen Ort mit den richtigen Berechtigungen.
- Der public Key ist eine Zeile Text, die kopiert man auf das andere System in eine andere Textdatei! Das kann man in zwei cmd Fenstern auch mit den Editoren seiner Vorliebe über die Zwischenablage machen! ;)
jo, is sicher einfacher. war auch nur 'ne frage, obs geht. Lustigerweise dachte ich genau an dein erwähntes "anderes" vorgehen. fhem zum vollen user machen, ohne wiederum zu wissen, was das hintenrum für folgen haben könnte.
na immerhin bin ich mal positiv genug gestimmt, dass ich auf einer win-maschine mal den server nachinstalliert hab zum zukünftigen testen. der rest kommt wahrscheinlich am we (wenns mir genug ruhe lässt bis dahin *g*).
[bitte hier ein weiteres dankeschön hindenken und für zukünftige beiträge weiter kopieren]
so, einrichtung auf meinem schleppi erledigt. kriege per ssh die shell, scheint also mal zu funzen. mehr hab ich derweil nicht probiert.
deine anleitungen werden idiotensicherer *lach*
ich frag' mich grade, ob man das nicht in ein fhem modul packen könnte - so für jene, die noch weniger als ich verstehen ...
meine, die linux-seite wäre dann abgedeckt und windows den server nachzuinstallieren ist auch ned schwer.
aja, erwähne mal bei dir, dass der opensshserver und der agent dafür in den diensten besser auf automatischen start gestellt werden sollten. zumindest bei mir waren beide "manueller start" (hoffe, ich hab das bei dir jetzt ned übersehen, hab einfach nur mal schnell befehle kopiert)
Zitat von: the ratman am 05 Juli 2023, 13:34:30der opensshserver und der agent dafür in den diensten besser auf automatischen start gestellt werden sollten.
Steht in Zeile 2 ;)
Get-Service -Name sshd | Set-Service -StartupType Automatic
Den Agenten braucht man mMn nicht.
fux - eh klar. hatte den server schon über die optionalen features installiert gehabt, den teil in deiner anleitung natürlich nur überflogen *g*
asche über mein haupt.
btw. - der agent muss dann entweder mit dem server mit installiert worden sein, oder war schon installiert. mir ist der nur aufgefallen, weil ich eben aufgrund meiner "klick-installation", die automatik ja erst einschalten musste.
na ja, wurscht. auf jeden fall war das angenehm einfach.
der Agent ist immer installiert. Das ist eventuell ein Teil, was für den ssh Client (der ist ja auch immer installiert) benutzt werden kann. Hab mich bisher damit nicht beschäftigt.
Schön das es funktioniert
gut, halb funzt es *g*
ich komme, wie gesagt per terminal und user fhem auf den pc
bspl.:
fhem@luke-8:/root$ ziel=xxx@192.168.178.21
fhem@luke-8:/root$ ssh $ziel
xxx@192.168.178.21's password:
-----------------------------------
Microsoft Windows [Version 10.0.22621.1928]
(c) Microsoft Corporation. Alle Rechte vorbehalten.
xxx@LITTLEBASTARD C:\Users\xxx>
wunderbar
aber von fhem weg pack ichs ned
ich probiere:
"ssh -T xxx@192.168.178.21 'C:\Users\xxx\Music\foobar2000\foobar2000.exe /playpause'"
oder auch
"ssh -T fhem@192.168.178.21 'C:\Users\xxx\Music\foobar2000\foobar2000.exe /playpause'"
ergibt:
xxx@192.168.178.21: Permission denied (publickey,password,keyboard-interactive).
Permission denied, please try again.
Permission denied, please try again.
fhem@192.168.178.21: Permission denied (publickey,password,keyboard-interactive).
Permission denied, please try again.
was hab ich wieder übersehen? gleich wirds wieder peinlich *g*
Du hast eventuell den public key nicht übertragen? Der Terminal Auszug oben fragt nach dem Passwort, public key Autorisierung geht ohne Passwort.
Hat der User fhem überhaupt ein Key Pärchen?
sudo -su fhem
ls -lha ~/.ssh
Oder in FHEM in der Kommandozeile
{qx(ls -lha ~/.ssh)}
Hat littlebastard schon eine Datei authorized_keys?
Du stehts hier:
xxx@LITTLEBASTARD C:\Users\xxx>
Dann
dir .ssh
nu denne:
fhem@luke-8:/root$ ls -lha ~/.ssh
insgesamt 20K
drwx------ 2 fhem dialout 4,0K 5. Jul 13:31 .
drwxr-xr-x 14 fhem dialout 4,0K 5. Jul 13:32 ..
-rw------- 1 fhem dialout 399 5. Jul 13:08 id_ed25519
-rw-r--r-- 1 fhem dialout 93 5. Jul 13:08 id_ed25519.pub
-rw-r--r-- 1 fhem dialout 222 5. Jul 13:31 known_hosts
C:\Users\xxx\.ssh>dir
Datenträger in Laufwerk C: ist System
Volumeseriennummer: 988B-B3B6
Verzeichnis von C:\Users\xxx\.ssh
05.07.2023 20:49 <DIR> .
06.07.2023 08:47 <DIR> ..
05.07.2023 13:08 399 id_ed25519
05.07.2023 13:08 93 id_ed25519.pub
2 Datei(en), 492 Bytes
2 Verzeichnis(se), 311 061 815 296 Bytes frei
da könnte der fehler liegen. ich musste .ssh selber anlegen und hab die daten von der fhem-seite kopiert. sicher wieder zu naiv gedacht?
Zitat von: the ratman am 06 Juli 2023, 09:05:29hab die daten von der fhem-seite kopiert. sicher wieder zu naiv gedacht?
leider völlig falsch. Hatte ich auch nirgendwo so geschrieben ;)
Mach bitte folgendes:
Du stehst hier: fhem@luke-8:/root$
cat ~/.ssh/id_ed25519.pub
Die Ausgabe kopierst Du in die Zwischenablage - muss in etwa so aussehen! Also drei Worte, eine Zeile
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFfqZQDEcjL7ZGWQKImsupE2SDSfsz7I/Qgb6PxXII3z fhem@fhem-docker
Dann stehst Du hier C:\Users\xxx\.ssh>
entweder
notepad authorized_keys
und die Zeile aus der Zwischenablage einfügen und speichern. Oder
echo DeineZeile >>authorized_keys
Hinweis: Du kannst auch den kompletten Pfad angeben (wenn Du woanders stehst) %HOMEDRIVE%%HOMEPATH%\.ssh\authorized_keys
Danach sollte bei
fhem@luke-8:/root$ ziel=xxx@192.168.178.21
fhem@luke-8:/root$ ssh $ziel
keine passwort Abfrage mehr kommen - falls doch - kann noch folgendes Problem vorliegen:
Der Benutzer ist Mitglied der Gruppe Administratoren :) dann musst Du einmalig noch folgendes machen:
notepad C:\ProgramData\ssh\sshd_config
ganz am Ende gibt es eine Zeile, die musst Du auskommentieren:
Zitat#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
- sudo -su fhem
- cat ~/.ssh/id_ed25519.pub --> ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPg3RValfPOP0c53bVnllxkdhUBqH6/C97rBk3HcR22U fhem@luke-8
- eingefügt in "authorized_keys" hab ich eben (ein normales textfile utf8 ohne endung) angelegt und obige zeile reinkopiert.
- in der sshd_config hab ich die zeile auskommentiert
- sicherheitshalber den schleppi restarted ...
"ssh -T xxx@192.168.178.21 'C:\Users\xxx\Music\foobar2000\foobar2000.exe /playpause'"
keine fehlermeldung mehr in fhem, aber am schleppi passiert nix.
hmm, fehler bei win?
Fehler beim Anmelden eines Kontos.
Antragsteller:
Sicherheits-ID: SYSTEM
Kontoname: LITTLEBASTARD$
Kontodomäne: WORKGROUP
Anmelde-ID: 0x3E7
Anmeldetyp: 8
Konto, für das die Anmeldung fehlgeschlagen ist:
Sicherheits-ID: NULL SID
Kontoname: NOUSER
Kontodomäne: LittleBastard
Fehlerinformationen:
Fehlerursache: Unbekannter Benutzername oder ungültiges Kennwort.
Status: 0xC000006D
Unterstatus:: 0xC0000064
Prozessinformationen:
Aufrufprozess-ID: 0x16c0
Aufrufprozessname: C:\Windows\System32\OpenSSH\sshd.exe
Netzwerkinformationen:
Arbeitsstationsname: LITTLEBASTARD
Quellnetzwerkadresse: -
Quellport: -
Detaillierte Authentifizierungsinformationen:
Anmeldeprozess: Advapi
Authentifizierungspaket: Negotiate
Übertragene Dienste: -
Paketname (nur NTLM): -
Schlüssellänge: 0
Dieses Ereignis wird beim Erstellen einer Anmeldesitzung generiert. Es wird auf dem Computer generiert, auf den zugegriffen wurde.
Die Antragstellerfelder geben das Konto auf dem lokalen System an, von dem die Anmeldung angefordert wurde. Dies ist meistens ein Dienst wie der Serverdienst oder ein lokaler Prozess wie "Winlogon.exe" oder "Services.exe".
Das Anmeldetypfeld gibt den jeweiligen Anmeldetyp an. Die häufigsten Typen sind 2 (interaktiv) und 3 (Netzwerk).
Die Felder für die Prozessinformationen geben den Prozess und das Konto an, für die die Anmeldung angefordert wurde.
Die Netzwerkfelder geben die Quelle einer Remoteanmeldeanforderung an. Der Arbeitsstationsname ist nicht immer verfügbar und kann in manchen Fällen leer bleiben.
Die Felder für die Authentifizierungsinformationen enthalten detaillierte Informationen zu dieser speziellen Anmeldeanforderung.
- Die übertragenen Dienste geben an, welche Zwischendienste an der Anmeldeanforderung beteiligt waren.
- Der Paketname gibt das in den NTLM-Protokollen verwendete Unterprotokoll an.
- Die Schlüssellänge gibt die Länge des generierten Sitzungsschlüssels an. Wenn kein Sitzungsschlüssel angefordert wurde, ist dieser Wert 0.
Der "einfache" Test ohne Fallstricke in FHEM wäre in der FHEM Kommandozeile
{qx 'ssh xxx@192.168.178.21 echo vom HostB' }
Der Windows Fehler scheint mir zu melden das der user xxx nicht existiert. Aber das kann ja nicht sein.
Ich hatte den Fallstrick vergessen: Du musst für ssh Zugriff auf Windows von Linux in jedem Fall die \ schützen :-[
"ssh -T xxx@192.168.178.21 'C:\\Users\\xxx\\Music\\foobar2000\\foobar2000.exe /playpause'"
Ich umgehe so etwas gerne, indem ich die Befehle in Scriptdateien packe.
Eigentlich steht auch ne Meldung im FHEM Log?
EDIT: Aber bevor wir damit weiter versuchen: Ich kann foobar2000 über diesen Weg nicht kontrollieren, da gibt es ein Berechtigungsproblem ... :(
{qx 'ssh xxx@192.168.178.21 echo vom HostB' }
ergibt (natürlich mit dem richtigen win-user und nicht xxx *g*):
o) kein eintrag im logfile von fhem
o) nix passiert auf win-seite
sag amal: wenn ich als derselbe user auf win schon angemeldet bin, könnte das probleme geben?
im systemprotokoll:
Ein Konto wurde erfolgreich angemeldet.
Antragsteller:
Sicherheits-ID: SYSTEM
Kontoname: LITTLEBASTARD$
Kontodomäne: WORKGROUP
Anmelde-ID: 0x3E7
Anmeldeinformationen:
Anmeldetyp: 5
Eingeschränkter Administratormodus: -
Remote Credential Guard: -
Virtuelles Konto: Ja
Token mit erhöhten Rechten: Ja
Identitätswechselebene: Identitätswechsel
Neue Anmeldung:
Sicherheits-ID: VIRTUAL USERS\sshd_14704
Kontoname: sshd_14704
Kontodomäne: VIRTUAL USERS
Anmelde-ID: 0x1233486
Verknüpfte Anmelde-ID: 0x0
Netzwerk-Kontoname: -
Netzwerk-Kontodomäne: -
Anmelde-GUID: {00000000-0000-0000-0000-000000000000}
Prozessinformationen:
Prozess-ID: 0x3970
Prozessname: C:\Windows\System32\OpenSSH\sshd.exe
Netzwerkinformationen:
Arbeitsstationsname: -
Quellnetzwerkadresse: -
Quellport: -
Detaillierte Authentifizierungsinformationen:
Anmeldeprozess: Advapi
Authentifizierungspaket: Negotiate
Übertragene Dienste: -
Paketname (nur NTLM): -
Schlüssellänge: 0
Dieses Ereignis wird beim Erstellen einer Anmeldesitzung generiert. Es wird auf dem Computer generiert, auf den zugegriffen wurde.
Die Antragstellerfelder geben das Konto auf dem lokalen System an, von dem die Anmeldung angefordert wurde. Dies ist meistens ein Dienst wie der Serverdienst oder ein lokaler Prozess wie Winlogon.exe oder Services.exe.
Das Anmeldetypfeld gibt den jeweiligen Anmeldetyp an. Die häufigsten Typen sind 2 (interaktiv) und 3 (Netzwerk).
Die Felder für die neue Anmeldung geben das Konto an, für das die neue Anmeldung erstellt wurde, d. h. das angemeldete Konto.
Die Netzwerkfelder geben den Ursprung einer Remoteanmeldeanforderung an. Der Arbeitsstationsname ist nicht immer verfügbar und kann in manchen Fällen leer bleiben.
Das Feld für die Identitätswechselebene gibt an, in welchem Umfang ein Prozess in der Anmeldesitzung einen Identitätswechsel vornehmen kann.
Die Felder für die Authentifizierungsinformationen enthalten detaillierte Informationen zu dieser spezifische Anmeldeanforderung.
– Die Anmelde-GUID ist ein eindeutiger Bezeichner, der verwendet werden kann, um dieses Ereignis mit einem KDC-Ereignis zu korrelieren.
– Die übertragenen Dienste geben an, welche Zwischendienste an der Anmeldeanforderung beteiligt waren.
– Der Paketname gibt das in den NTLM-Protokollen verwendete Unterprotokoll an.
und "special logon"
Einer neuen Anmeldung wurden besondere Rechte zugewiesen.
Antragsteller:
Sicherheits-ID: VIRTUAL USERS\sshd_14704
Kontoname: sshd_14704
Kontodomäne: VIRTUAL USERS
Anmelde-ID: 0x1233486
Berechtigungen: SeImpersonatePrivilege
er passt auch die policy an ... aber dann wird einfach abgemeldet:
Ein Konto wurde abgemeldet.
Antragsteller:
Sicherheits-ID: VIRTUAL USERS\sshd_14704
Kontoname: sshd_14704
Kontodomäne: VIRTUAL USERS
Anmelde-ID: 0x1233486
Anmeldetyp: 5
Dieses Ereignis wird generiert, wenn eine Anmeldesitzung zerstört wird. Es kann anhand des Wertes der Anmelde-ID positiv mit einem Anmeldeereignis korreliert werden. Anmelde-IDs sind nur zwischen Neustarts auf demselben Computer eindeutig.
sicher nicht von mir *g*
was foobar angeht, so hat das genau so bis jetzt mit winconnect gefunzt. bspl. https://wiki.hydrogenaud.io/index.php?title=Foobar2000:Commandline_Guide
mein vollständiges und funzendes doif aus dem derzeigien fhem dazu:([$SELF:cmd_1])
( set littlebastard_winconnect commandhide "C:\Users\xxx\Music\foobar2000\foobar2000.exe" /playpause )
DOELSEIF
([$SELF:cmd_2])
( set littlebastard_winconnect commandhide "C:\Users\xxx\Music\foobar2000\foobar2000.exe" /next )
DOELSEIF
([$SELF:cmd_3])
( set littlebastard_winconnect commandhide "C:\Users\xxx\Music\foobar2000\foobar2000.exe" /prev )
DOELSEIF
([$SELF:cmd_4])
( set littlebastard_winconnect commandhide "C:\Users\xxx\Music\foobar2000\foobar2000.exe" /stop )
DOELSEIF
([$SELF:cmd_5])
( set littlebastard_winconnect commandhide "C:\Users\xxx\Music\foobar2000\foobar2000.exe" /play )
Zitat von: the ratman am 06 Juli 2023, 14:46:56o) nix passiert auf win-seite
Aber im Browser von FHEM sollte doch die echo Meldung kommen? Sonst funktioniert es immer noch nicht.
nö, da kommt nix im log ...
aber es kommt doch was an bei win: "Einer neuen Anmeldung wurden besondere Rechte zugewiesen."
btw - hab im obigen beitrag gerade erweitert, als du geschrieben hattest. nur, damit dus nicht übersiehst *g*
und ich hab grad mein obiges doif nochmal probiert - das funzt. also die befehle gehen sicher.
Zitat von: the ratman am 06 Juli 2023, 14:46:56sag amal: wenn ich als derselbe user auf win schon angemeldet bin, könnte das probleme geben?
Eigentlich nicht, mach ich genauso.
Was passiert denn wenn Du mit
sudo -su fhem
ssh xxx@192.168.178.21
eine interaktive Sitzung öffnest? Wird ein Passwort abgefragt?
Ich bin etwas ratlos
nö, ich krieg' sofort die konsole, kein pwd nötig. (als test ruf' ich dann auch noch n "dir" auf. das kommt auch korrekt)
das ist ja immerhin schon ein fortschritt zu gestern *g*
schön, dann haben wir gemeinsamkeiten *g*
ich schreib' zur sicherheit nochmal meine standards auf:
das system ist "omv", also ein kleines debian mit omv als "grafische oberfläche". installiert per omv, also *nicht* vorher debian, dann omv, sondern das image von der omv-seite.
fhem ist da drauf ganz normal (also kein container, keine dummen spielchen über omv) installiert und läuft (inkl. des users "fhem") unauffällig == ich kann z.b. auf sämtliche hw zugreifen, nix im neuen fhem verhält sich anders als im echt-fhem.
der user "xxx" hat eingeschränkte adminrechte auf win.
was wäre noch wichtig zu wissen?
nachtrag:
habs jetzt nicht nur per "web-console" der omv probiert, sondern auch mal "kiddy" bemüht (is putty, nur mit der möglichkeit pwd's zu speichern) - auch dort gehts. und zwar direkt vom angesprochenen schleppi, wie auch von meiner aktiven nas weg, also auch hardware-technisch getrennt.
sprich: ich hab jetzt mal "direkt" vom meinem nuc (das zukünftige fhem) und auch mit konsole vom win-schhleppi (vielleicht macht es ja unterschiede) probiert.
verhalten is immer gleich
das wäre aber das Gleiche wie{qx 'ssh xxx@192.168.178.21 dir' }
Da sollte die Ausgabe von dir im Browser erscheinen.
Irgendwas muss bei Dir unterschiedlich sein zwischen sudo -su fhem und dem user / der Umgebung mit dem fhem läuft.
Läuft dein FHEM wirklich als user fhem?
{qx(whoami)}
Du hast nicht einen user fhem auf dem host, dann eine VM mit einem user fhem drin oder einen docker Container in dem FHEM läuft?
also das geht auch scheinbar (bis auf den kaputten zeichensatz (was n da wieder los?)):
Datentr�ger in Laufwerk C: ist System
Volumeseriennummer: 988B-B3B6
Verzeichnis von C:\Users\xxx
06.07.2023 09:56 <DIR> .
20.11.2022 23:11 <DIR> ..
22.11.2022 16:34 <DIR> .android
08.01.2023 16:32 <DIR> .arduinoIDE
22.06.2023 12:22 <DIR> .docker
11.06.2023 10:59 <DIR> .remoteit
06.07.2023 12:21 <DIR> .ssh
01.03.2023 15:49 <DIR> .thumbnails
23.06.2023 16:29 <DIR> 2fast
22.02.2023 16:26 <DIR> 3D Objects
08.01.2023 19:10 <DIR> ansel
20.11.2022 23:16 <DIR> AppData
08.02.2023 09:28 130�787�944 balenaEtcher-Portable.exe
20.11.2022 23:20 <DIR> Contacts
27.06.2023 19:03 <DIR> Desktop
20.07.2022 17:24 303�104 DirectShowLib-2005.dll
23.06.2023 16:29 <DIR> Documents
06.07.2023 13:14 <DIR> Downloads
04.12.2022 09:38 <DIR> Favorites
25.10.2021 11:12 113�721�856 ffmpeg.exe
03.09.2020 17:53 524�752 gifski.dll
06.09.2022 13:49 7�363�560 HWiNFO64.exe
07.09.2022 21:06 55 HWiNFO64.INI
21.11.2022 11:22 3�711�904 jcpicker.exe
30.04.2023 17:55 213 jcpicker.ini
30.04.2023 17:55 56 jcpicker.txt
26.06.2022 21:09 783�872 kitty.exe
19.04.2020 11:00 8�709 kitty.ini
20.11.2022 23:20 <DIR> Links
05.07.2023 09:17 <DIR> MediaElch
02.08.2017 10:32 505�664 messagebox.wav
20.11.2022 23:20 <DIR> Music
18.02.2023 10:38 <DIR> Odin3
26.07.2022 11:35 <DIR> OneDrive
23.06.2023 16:29 <DIR> Pictures
23.07.2022 14:24 <DIR> renamer
20.11.2022 23:20 <DIR> Saved Games
27.06.2023 15:08 <DIR> ScreenToGif
24.06.2023 10:13 22�529�024 ScreenToGif.exe
20.11.2022 23:20 <DIR> Searches
11.06.2023 18:24 <DIR> Spiele
22.04.2023 12:04 <DIR> Tracing
02.08.2017 10:33 479�464 ttsmsg.wav
20.05.2023 14:17 <DIR> Videos
23.11.2022 09:35 1�656�832 WinControl.exe
23.11.2022 09:35 56�832 WinControlService.exe
16 Datei(en), 282�433�841 Bytes
30 Verzeichnis(se), 310�814�035�968 Bytes frei
und
{qx(whoami)} --> fhem
ZitatDu hast nicht einen user fhem auf dem host, dann eine VM mit einem user fhem drin oder einen docker Container in dem FHEM läuft?
eindeutig nö
fhem lauft direkt auf debian - NICHT unter einem container oder sonst was. das war mir wichtig, weils genau so beim aktuellen system is und nur nervt *g*
nachfrage:
du sagtest am anfang, es ginge auch ohne powershell.
nur zur sicherheit: wie ginge mein foobar-befehl MIT powershell genau?
ich weine gerade ... hab beide rechner NOCHMAL neu hochgefahren.
zumindest ergibt {qx 'ssh xxx@192.168.178.21 echo vom HostB' } jetzt "vom HostB"
aber bei meinem foobar-befehl ändert sich nix
sag mir bitte nochmal genau mit und ohne powershell, was ich aus fehm aufzurufen hab.
also was mach' ich mit "C:\Users\xxx\Music\foobar2000\foobar2000.exe" /playpause - nicht, dass es an irgendwelchen anführungsstichen oder so happert ...
ok :) sieht für ssh erstmal gut aus.
Erstmal ein Test noch vorab: Pack den Befehl
"C:\Users\xxx\Music\foobar2000\foobar2000.exe" /playpause
in den Pfad C:\Users\xxx in eine cmd datei - von mir aus t.cmd
Zum Test machst Du lokal die cmd auf und probierst ob t.cmd ausgeführt wird. Wenn ja machst Du von der FHEM Maschine diese Aktion
sudo -su fhem
ssh xxx@192.168.178.21
und rufst dann wieder einfach t.cmd auf. Funktioniert das? (Das funktioniert bei mir nämlich nicht und ich verstehe noch nicht genau warum)
gut, hab ne t.cmd mit 1 zeile befehl ...
xxx@LITTLEBASTARD C:\Users\xxx>t.cmd
xxx@LITTLEBASTARD C:\Users\xxx>"C:\Users\xxx\Music\foobar2000\foobar2000.exe" /playpause
er ruft auf, bleibt aber dann ohne bestätigung hängen. nach ca. 30 sek. gibts wieder ne prompt
habs nun sicherheitshalber auch mit z.b. C:\Users\xxx\Spiele\GW2.bat probiert. ist einfach ein immer schon (ca. 8 jahre lang) funzender aufruf, für n dummes game. funzt genauso nicht
das stünde drinnen:
@Echo off
start "" "C:\Users\xxx\Spiele\Guild Wars 2\Gw2-64.exe" -autologin -mapLoadinfo
start "" "C:\Program Files\TeamSpeak 3 Client\ts3client_win64.exe"
cd "C:\Users\xxx\Spiele\TacO\"
start "" "GW2TacO.exe"
exit
nachtrag - weißt du was noch mysteriöser ist?
ich dachte, ich ruf' mal
"C:\Users\xxx\Music\foobar2000\foobar2000.exe" /playpause
direkt über die powershell am schleppi auf.
erster aufruf meinte, es rennt schon eine instanz. stimmt auch. kill' ich die, geht auch der aufruf in der win powershell.
ich frag' mich grade, was den foobar gestartet haben soll, weil ich krieg' nirgends eine anzeige, dass er rennt. könnt eigentlich heute nur fhem (vom testsystem) gewesen sein. dann stimmt aber gewaltig was nicht. weil der foobar kommt IMMER in den vordergrund - egal, wie ich ihn aufrufe. und vor allem: wenn er neu startet per playpause, spielt er sofort ab, was er noch in der liste hat. entweder bin ich taub, oder das ding verarscht mich gerade ...
die ssh shell ist eine reine Textshell, auch wenn es genauso ausschaut: in der lokalen cmd (oder powershell) kann man auch grafische Programme starten. In der ssh Shell ist man remote und jeglicher Output landet in der Textshell, Windows Programme mit grafischen Output starten geht da meines Wissens in keiner Variante. Witzigerweise kann man über ssh in wsl grafische Linuxprogramme starten die an einen XServer senden.
ich hab mal weiter getestet:
befehl --> "C:\Users\xxx\Music\foobar2000\foobar2000.exe" /playpause
cmd = problemlose ausführung. kann sogar die " weg lassen
powershell (ohne adminrechten) =
PS C:\Users\xxx> "C:\Users\the-r\Music\foobar2000\foobar2000.exe" /playpause
In Zeile:1 Zeichen:51
+ "C:\Users\xxx\Music\foobar2000\foobar2000.exe" /playpause
+ ~
Sie müssen nach dem Operator "/" einen Wertausdruck bereitstellen.
In Zeile:1 Zeichen:51
+ "C:\Users\xxx\Music\foobar2000\foobar2000.exe" /playpause
+ ~~~~~~~~~
Unerwartetes Token "playpause" in Ausdruck oder Anweisung.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ExpectedValueExpression
na, vielleicht fallt ja dir was zu der meldung ein?
a) wie werd' ich die pudermuschel los und sende per ssh an die gute, alte cmd?
oder
b) was will mir mein windoof da grade sagen?
ja ja, irgendwer meinte mal: "cmd und pudermuschel sind ja eh dasselbe" *g*. gut, das war mir sogar klar, dass das n depp war ...
NACHTRAG:
ha schurke!
man muss bei der powershell zwingend die "" weg lassen.
C:\Users\xxx\Music\foobar2000\foobar2000.exe /playpause
geht also.
also nur mehr die (sicherheits)frage an dich: was setz' ich für 'nen befehl ab in fhem?
nicht, dass mir aufgrund irgendwelche weggelassener sonderzeichen, fhem um die ohren fliegt irgendwann, wenn ich nicht mehr dran denk *g*
also per ssh gesendet landet landet meiner Meinung nach in Windows in einem Shell Prozess von Openssh, der am ehesten cmd.exe ist. Powershell ist das dort keinesfalls. Das müsstest Du mit ssh user@host powershell bla bla abschicken, also powershell aufrufen und Parameter dahinter.
Das Standard Terminal ist seit Windows irgendwas nicht mehr cmd sondern powershell, aber das ist nicht mal das gleiche geschweige denn dasselbe :)
Powershell hat beim Aufruf wieder andere Parsingregeln als cmd, hast Du ja schon bemerkt. Ist im Zweifelsfall auch nur schwierig.
Ich habe dazu in meinem Blog schon ein paar Artikel verfasst um das Problem niederzuschreiben und immer wieder fallen mir neue Dinge auf. Nichts bleibt wie es ist?
Die Hochkommas um den Pfad/Befehl brauchst Du immer dann wenn Leerzeichen enthalten sind, z.B. bei \Program Files\ ;)
Deswegen mein Rat: entweder ist der Befehl ganz kurz und "einfach" oder man fährt besser damit, eine cmd Datei am Ziel zu machen und die über ssh aufrufen.
ging ja auch nicht. hätte deine vorschlag getestet und auch noch die .bat probiert - siehe oben.
was mach' ich nun?
mir bleibt zwar immer noch winconnect, aber wie lange?
ZitatDie Hochkommas um den Pfad/Befehl brauchst Du immer dann wenn Leerzeichen enthalten sind, z.B. bei \Program Files\ ;)
da könnte man sich ja fast trauen. bis ich dann später mal von mir selber abschreibe und nix geht *g*
ach so, ich dachte Deine letzten Tests nach Neustart usw. waren erfolgreich?
Also foobar2000 geht nicht ::) ich hatte das über den Windows Store installiert, das hat sich ganz komisch verhalten. Ich installiere das nochmal anders und schau nochmal.
Alles andere, reine cmd Programme, per Powershell Systemwerte abfragen, Scripts starten usw. funktioniert bei mir einwandfrei. Es gibt manche cmdlets die machen pseudografische Ausgaben (blaue Fortschrittsanzeige am oberen Bildrand) die machen dann Probleme.
nö nö, direkt in der powershell, am windows-rechner, gings mit foobar. das andere war ja nur eine funzendes echo von deinen tests.
die frage bliebe also wie ich das nun ohne anführungsstriche von fhem aus senden soll ...
gut, dann ist ssh wohl nicht für mich, derzeit hätte ich nur diesen konkreten anwendungszweck.
ich geh' jetzt auch mal frech von aus, dass mein 2., eventueller, anwendungszweck auch ned gehen wird - das win-interne tts. das hätte ich nämlich gerne für durchsagen genutzt. hätte die grauslichen offline-tts stimmen von linux z.b. mimic3 (und die is ja schon 'ne bessere) zumindest verringert und mein gehör geschont *g*.
auf jeden fall dank' ich dir nochmal für deine zeit!
und vielleicht gibts ja was wirklich funzendes da draußen in der welt, dass ebenfalls keine zusatzprogramme auf win erfordert? mal schauen, ob hier noch wer reinstolpert ...
Zitat von: the ratman am 06 Juli 2023, 16:32:13gut, hab ne t.cmd mit 1 zeile befehl ...
xxx@LITTLEBASTARD C:\Users\xxx>t.cmd
xxx@LITTLEBASTARD C:\Users\xxx>"C:\Users\xxx\Music\foobar2000\foobar2000.exe" /playpause
er ruft auf, bleibt aber dann ohne bestätigung hängen. nach ca. 30 sek. gibts wieder ne prompt
naja Du hattest ja so getestet, bei mir gab es einen ganz anderen Fehler - darauf mein Resümee: es geht nicht.
Deswegen: ich installiere das nochmal anders (nicht über store) mal schauen.
Wie wird die win interne tts angesteuert? Hast Du da ne Info?
so überhaupt gar keine info *g*
mir ist das tts-zeugs erst in den sinn gekommen, als damals winconnect programmiert wurde und ich just zu dem zeitpunkt mit tts auf linux gespielt hab. das ist dann halt schon ein krasser unterschied in der qualität. da halten halt nur noch online-tts mit, was ich aber total verweigere.
eventuell was von den warmluftgebläsen auf stackoverflow: https://stackoverflow.com/questions/1040655/ms-speech-from-command-line#39647762
ob das brauchbar ist, musst du beurteilen.
übrigens: nur 'ne sehr dumme idee --> warum schmeißt du dich nicht mit dem winconnect-programmierer zusammen? ich denke, ihm fehlt die zeit und du bist bisher der "windoof-wissenste", der mir hier über den weg gelaufen ist.
das wäre sicher 'ne geile zusammenarbeit bei euch beiden ... ich find' allein seine wmi-schnittstelle endgeil und tts und cam und mic und ...
leute wie ich hätten weiterhin eine "modul-sicherheit" und müssen nicht so viel lernen, dass ihnen das gelernte nix nutzt *lach*