Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Ping über bestimmtes Interface

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Ping über bestimmtes Interface

    This topic has been deleted. Only users with topic management privileges can see it.
    • OliverIO
      OliverIO last edited by OliverIO

      @mcu sagte in Ping über bestimmtes Interface:

      @uncleb Die Frage ist warum Exec im result nichts drin hat, obwohl du es ja in der Console als Ergebnis bekommst.

      sudo -u iobroker ssh root@172.17.10.1 -t "ping....
      

      ist das ne Möglichkeit?

      Setz mal -t 1, also nur ein Ping als Ergebnis.

      da wird in der regel eine passwortabfrage kommen und wenn nein dann gibts schläge auf die finger 🙂
      die kann blockly nicht eintippen.
      für solche fälle muss man die authentifizierung über public-key machen

      https://wiki.ubuntuusers.de/SSH/#Authentifizierung-ueber-Public-Keys

      auf der aktuellen maschine (iobroker) wird mit dem user iobroker eine schlüsseldatei erzeugt und an den anderen rechner (openwrt) übermittelt.
      danach benötigt man kein passwort mehr, da die schlüssel durch ssh im hintergrund automatisiert ausgetauscht werden.

      das einzurichten wird im Link erklärt. Alle Schritte führst du vom iobroker rechner aus durch.

      hier auch der link von openwrt zum verfahren.
      https://openwrt.org/docs/guide-user/security/dropbear.public-key.auth

      U 1 Reply Last reply Reply Quote 0
      • U
        UncleB @OliverIO last edited by

        @oliverio Danke für deine Antwort.
        Auth über Pubkeys hatte ich eingerichtet, nur halt für den User "Pi"

        Jetzt wollte ich gerade ein Schlüsselpaar für User "iobroker" generieren, dazu auf dem iobroker Rechner den User wechseln
        "su iobroker" doch welches Passwort hat User "iobroker" Standardmäßig?

        OliverIO 1 Reply Last reply Reply Quote 0
        • OliverIO
          OliverIO @UncleB last edited by OliverIO

          @uncleb said in Ping über bestimmtes Interface:

          @oliverio Danke für deine Antwort.
          Auth über Pubkeys hatte ich eingerichtet, nur halt für den User "Pi"

          Jetzt wollte ich gerade ein Schlüsselpaar für User "iobroker" generieren, dazu auf dem iobroker Rechner den User wechseln
          "su iobroker" doch welches Passwort hat User "iobroker" Standardmäßig?

          hatte ich oben schon mal geschrieben.
          damit öffnest du eine neue shell (neue Konsolenebene mit user iobroker, auf dem pi und vielen anderen debian-artigen wird standardmäßig bash verwendet)
          am prompt sollte dann iobroker@ stehen.
          am ende kannst du die weieder mit exit verlassen und dann hast du das prompt mit deinem standard user

          sudo -u iobroker bash
          
          U 1 Reply Last reply Reply Quote 0
          • U
            UncleB @OliverIO last edited by

            @oliverio
            Alsooo ich hab jetzt mit dem User "iobroker" ein neues Schlüsselpaar erzeugt.
            Den Pubkey hab ich in die authorized_keys von OpenWRT hinterlegt..
            Aber jetzt muss doch auf OpenWRT auch ein User "iobroker" erstellt werden?
            Wie soll ich sonst mit iobroker@172.17.10.1 connecten wenns den User nicht gibt?

            OliverIO 1 Reply Last reply Reply Quote 0
            • OliverIO
              OliverIO @UncleB last edited by OliverIO

              @uncleb said in Ping über bestimmtes Interface:

              @oliverio
              Alsooo ich hab jetzt mit dem User "iobroker" ein neues Schlüsselpaar erzeugt.
              Den Pubkey hab ich in die authorized_keys von OpenWRT hinterlegt..
              Aber jetzt muss doch auf OpenWRT auch ein User "iobroker" erstellt werden?
              Wie soll ich sonst mit iobroker@172.17.10.1 connecten wenns den User nicht gibt?

              @Thomas-Braun Wenn du magst, kannst du dies in den Linux Werkzeugkasten mit aufnehmen.

              @UncleB
              du brauchst keinen extra user einrichten.
              du generierst ja die keys unter iobroker und kopierst den key unter einem bestimmten user nach openwrt. in der Regel nimmst du auf openwrt root.
              wenn du zusätzlich noch sicher gehen willst, kannst du natürlich auch auf openwrt mit den üblichen linux befehlen einen zusätzlichen user anlegen. ist aber eigentlich nicht notwendig, da die authentifizierung über key sicher ist, sofern niemand sonst auf openwrt zugreifen kann oder an den private key des anderen rechners kommt.

              da ich es soeben selbst probiert habe ist mir aufgefallen, das es beim kopieren eine kleine Abweichung gibt, da auf openwrt dropbear als ssh server verwendet wird.
              daher musst du deinen key an eine andere stelle in openwrt kopieren.
              folgende Reihenfolge hat funktioniert

              Anleitung zur Einrichtung des passwortlosen Zugriffs von einem Rechner auf einen anderen Rechner.
              Optional können über den ssh-Befehl auch auf dem Remote-Rechner entsprechende Befehle ausgeführt werden.
              1.)
              Anmelden als iobroker auf dem iobroker Rechner und starten einer eigenen Shell.
              Dieser Befehl kann auch sonst zum Test von Shell-befehlen aus blockly oder javascript verwendet werden.

              sudo -u iobroker bash
              

              2.)
              falls noch nicht passiert.
              anlegen eines Schlüsselpärchens (public und private key)

              ssh-keygen
              

              3.) Kopieren des Schlüssels auf den anderen Rechner auf den zugegriffen werden soll
              3a.) wenn auf dem externen Server dropbear installiert ist wie bspw. bei openwrt

              evtl. nachzubearbeiten ist
              root = der Benutzer auf dem entfernten Rechner der für das Login verwendet werden soll
              IP-Adresse=eigentlich logisch, die Adresse des entfernten Rechners

              cat ~/.ssh/id_rsa.pub | ssh root@192.168.1.1 "cat >> /etc/dropbear/authorized_keys"
              

              3b.) wenn auf dem externen Server der Standard SSH Server installiert ist wie bspw. openssh.
              falls nicht bekannt, dann einfach probieren

              evtl. nachzubearbeiten ist
              root = der Benutzer auf dem entfernten Rechner der für das Login verwendet werden soll
              IP-Adresse=eigentlich logisch, die Adresse des entfernten Rechners

              ssh-copy-id root@192.168.1.1
              

              4.) Test des Zugangs
              Nach absenden des Befehls erscheint der eingabeprompt des anderen Rechners mit dem gewählten Benutzer

              evtl. nachzubearbeiten ist
              root = der Benutzer auf dem entfernten Rechner der für das Login verwendet werden soll
              IP-Adresse=eigentlich logisch, die Adresse des entfernten Rechners

              ssh root@192.168.1.1
              
              U 1 Reply Last reply Reply Quote 0
              • U
                UncleB @OliverIO last edited by

                @oliverio
                Vielen Dank Oliver für die sehr sehr ausführliche Anleitung,

                ssh-copy-id
                

                Als User "iobroker" war der "Knackpunkt" jetzt läuft das ganze
                Perfekt

                javascript.0 (583) script.js.common.lte_test: PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: seq=0 ttl=111 time=42.953 ms 64 bytes from 8.8.8.8: seq=1 ttl=111 time=42.639 ms 64 bytes from 8.8.8.8: seq=2 ttl=111 time=42.312 ms --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 42.312/42.634/42.953 ms
                

                Zum auswerten, oben hast du ja n Code gepostet, am liebsten wäre mir blockly, damit kann ich wenigstens bisschen was anfangen.
                In der Form
                falls 0% packet loss setzte Datenpunkt auf true
                Sonst setze Datenpunkt auf false

                Hast da auch noch n Ansatz?

                OliverIO 1 Reply Last reply Reply Quote 0
                • OliverIO
                  OliverIO @UncleB last edited by

                  @uncleb sagte in Ping über bestimmtes Interface:

                  @oliverio
                  Vielen Dank Oliver für die sehr sehr ausführliche Anleitung,

                  ssh-copy-id
                  

                  Als User "iobroker" war der "Knackpunkt" jetzt läuft das ganze
                  Perfekt

                  javascript.0 (583) script.js.common.lte_test: PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: seq=0 ttl=111 time=42.953 ms 64 bytes from 8.8.8.8: seq=1 ttl=111 time=42.639 ms 64 bytes from 8.8.8.8: seq=2 ttl=111 time=42.312 ms --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 42.312/42.634/42.953 ms
                  

                  Zum auswerten, oben hast du ja n Code gepostet, am liebsten wäre mir blockly, damit kann ich wenigstens bisschen was anfangen.
                  In der Form
                  falls 0% packet loss setzte Datenpunkt auf true
                  Sonst setze Datenpunkt auf false

                  Hast da auch noch n Ansatz?

                  Mit blockly kenn ich mich nicht aus

                  U 1 Reply Last reply Reply Quote 0
                  • U
                    UncleB @OliverIO last edited by

                    @oliverio
                    Also JavaScript? 🙂
                    Oder @mcu hat ne Blockly Idee? 🙂

                    M 1 Reply Last reply Reply Quote 0
                    • M
                      MCU @UncleB last edited by

                      @uncleb Also das Exec mit result funktioniert jetzt? Was soll das Blockly als Ergebnis liefern?

                      U 1 Reply Last reply Reply Quote 0
                      • U
                        UncleB @MCU last edited by

                        @mcu
                        Das funktioniert, würde halt gerne filtern, falls im result " 0% packet loss" auftaucht setzte einen Datenpunkt auf true sonst auf false

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          MCU @UncleB last edited by

                          @uncleb
                          f5af34f5-fbf4-4838-815b-755b32653b36-image.png

                          <xml xmlns="https://developers.google.com/blockly/xml">
                           <variables>
                             <variable id=";YF3|o/y*)h?,O28==3L">result</variable>
                             <variable type="timeout" id="timeout">timeout</variable>
                           </variables>
                           <block type="comment" id="e]kVli)ILN=y)d:vel=Z" x="-187" y="-113">
                             <field name="COMMENT">Eigenen Namen vergeben</field>
                             <next>
                               <block type="create" id="9%5V)79T{AMd)?nSyr5p">
                                 <field name="NAME">0_userdata.0.PING.Router</field>
                                 <next>
                                   <block type="exec" id="290NDe41k0gkF-e,kpD.">
                                     <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                                     <field name="WITH_STATEMENT">TRUE</field>
                                     <field name="LOG"></field>
                                     <value name="COMMAND">
                                       <shadow type="text" id="O~AcFkF8K$s(ZWC)y_7q">
                                         <field name="TEXT">sudo ping -c 1 192.168.178.1</field>
                                       </shadow>
                                     </value>
                                     <statement name="STATEMENT">
                                       <block type="debug" id="g+yq*[l:^C9c/bZDUy:)" disabled="true">
                                         <field name="Severity">log</field>
                                         <value name="TEXT">
                                           <shadow type="text" id="}Hp!oK2bcTa+8Zwr[%Np">
                                             <field name="TEXT">test</field>
                                           </shadow>
                                           <block type="variables_get" id="jp`/Pp*A0U/xzpA)J+:]">
                                             <field name="VAR" id=";YF3|o/y*)h?,O28==3L">result</field>
                                           </block>
                                         </value>
                                         <next>
                                           <block type="timeouts_settimeout" id="TQiGtrD:6u^_aos|pui0">
                                             <field name="NAME">timeout</field>
                                             <field name="DELAY">1000</field>
                                             <field name="UNIT">ms</field>
                                             <statement name="STATEMENT">
                                               <block type="controls_if" id="fPIJ:oRn_,rmm*LZQU#A">
                                                 <mutation else="1"></mutation>
                                                 <value name="IF0">
                                                   <block type="logic_compare" id="7[)ieAU/eTBcyb/!oYdN">
                                                     <field name="OP">GT</field>
                                                     <value name="A">
                                                       <block type="text_indexOf" id="y8:j2rOu;y1kh1piKV%e">
                                                         <field name="END">FIRST</field>
                                                         <value name="VALUE">
                                                           <block type="variables_get" id="5~{(hK66uCGL_fa~QGK6">
                                                             <field name="VAR" id=";YF3|o/y*)h?,O28==3L">result</field>
                                                           </block>
                                                         </value>
                                                         <value name="FIND">
                                                           <shadow type="text" id="yK;)Y69wF#S}fpU]zJOw">
                                                             <field name="TEXT">0% packet loss</field>
                                                           </shadow>
                                                         </value>
                                                       </block>
                                                     </value>
                                                     <value name="B">
                                                       <block type="math_number" id="5((2W!7oft}35K$8eS+(">
                                                         <field name="NUM">0</field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </value>
                                                 <statement name="DO0">
                                                   <block type="control" id="DOI4:=8hPp5#}(|ygj}3">
                                                     <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                     <field name="OID">0_userdata.0.PING.Router</field>
                                                     <field name="WITH_DELAY">FALSE</field>
                                                     <value name="VALUE">
                                                       <block type="logic_boolean" id="Z@f=ed(a_V@Kgk.hES*?">
                                                         <field name="BOOL">TRUE</field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </statement>
                                                 <statement name="ELSE">
                                                   <block type="control" id="s4{MO=oaUmL{eT/pp7]8">
                                                     <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                     <field name="OID">0_userdata.0.PING.Router</field>
                                                     <field name="WITH_DELAY">FALSE</field>
                                                     <value name="VALUE">
                                                       <block type="logic_boolean" id="*+J|8$*02T-9mLZf/${$">
                                                         <field name="BOOL">FALSE</field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </statement>
                                               </block>
                                             </statement>
                                           </block>
                                         </next>
                                       </block>
                                     </statement>
                                   </block>
                                 </next>
                               </block>
                             </next>
                           </block>
                          </xml>
                          

                          U 1 Reply Last reply Reply Quote 0
                          • U
                            UncleB @MCU last edited by

                            @mcu
                            Niiice das klappt schon mal 🙂
                            Wäre nur noch schön wenn man keine Ausgabe erhält.
                            Ziehe ich den Stick ab:

                            20:27:37.213	info	javascript.0 (578) script.js.common.lte_test: PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: seq=0 ttl=112 time=50.896 ms 64 bytes from 8.8.8.8: seq=1 ttl=112 time=40.574 ms 64 bytes from 8.8.8.8: seq=2 ttl=112 time=50.215 ms --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 40.574/47.228/50.896 ms
                            20:28:43.676	info	javascript.0 (578) Stop script script.js.common.lte_test
                            20:28:47.605	info	javascript.0 (578) Start javascript script.js.common.lte_test
                            20:28:47.638	info	javascript.0 (578) script.js.common.lte_test: registered 0 subscriptions and 0 schedules
                            20:28:48.822	info	javascript.0 (578) script.js.common.lte_test:
                            

                            Gibts nur n script.js.common.lte_test:
                            Also falls keine Ausgabe dann ist das Interface auch nicht erreichbar, kann ich den DP auch so auf false setzen?

                            OliverIO 1 Reply Last reply Reply Quote 0
                            • OliverIO
                              OliverIO @UncleB last edited by

                              @uncleb sagte in Ping über bestimmtes Interface:

                              Also falls keine Ausgabe

                              Man erinnere sich an den timeout-parameter

                              U 1 Reply Last reply Reply Quote 0
                              • U
                                UncleB @OliverIO last edited by

                                @MCU @OliverIO
                                Funktioniert alles wie es soll, perfekt danke 🙂 🙂 🙂

                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post

                                Support us

                                ioBroker
                                Community Adapters
                                Donate
                                FAQ Cloud / IOT
                                HowTo: Node.js-Update
                                HowTo: Backup/Restore
                                Downloads
                                BLOG

                                376
                                Online

                                32.0k
                                Users

                                80.3k
                                Topics

                                1.3m
                                Posts

                                3
                                37
                                1454
                                Loading More Posts
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes
                                Reply
                                • Reply as topic
                                Log in to reply
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                The ioBroker Community 2014-2023
                                logo