Ankündigung

Einklappen
Keine Ankündigung bisher.

Wechsel von Linux auf Windows Probleme mit Shell Scrips

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Wechsel von Linux auf Windows Probleme mit Shell Scrips

    Hallo da ich test weise von Linux auf Windows wechsel, steh ich vor einem Problem, und zwar bekomme ich es nicht hin eine ausführbare bat Datei zu erstellen die den Job der Shell Scrips erledigt

    hier die sh datei

    Code:
    #!/bin/bash
    
    CS=$(curl -s --header "Content-Type: text/plain" "http://192.168.2.116:8080/rest/items/Light_SZ_Schrank/state")
    COMMAND="ON"
    
    if [ "$CS" = "ON" ] ; then
    COMMAND="OFF"
    fi
    
    curl --header "Content-Type: text/plain" --request POST --data "$COMMAND" http://192.168.2.116:8080/rest/items/Light_SZ_Schrank
    kann ich das irgendwie in windows zum laufen bekommen?

    #2
    Wo genau legt denn Dein Problem ? curl gibt es auch für die Windows Kommandozeile.

    Kommentar


      #3
      Ja das habe ich aber es funzt nicht. Habe curl im script durch c:/curl ersetzt aber es geht nicht

      Kommentar


        #4
        Wie sieht denn Deine entsprechende *.bat aus? *.sh wird nur unter Linux unterstützt (um es mal vollkommen falsch auszudrücken...)

        Kommentar


          #5
          bin nicht lachen in den bereich bin ich sehr unerfahren... hier meine bat

          Code:
          CS=$(c:/curl -s --header "Content-Type: text/plain" "http://192.168.2.116:8080/rest/items/Light_SZ_Schrank/state")
          COMMAND="ON"
          
          if [ "$CS" = "ON" ] ; then
          COMMAND="OFF"
          fi
          
          cur
          und hier die fehlermeldung

          Code:
          C:\Users\icedeath>COMMAND="ON"
          Der Befehl "COMMAND" ist entweder falsch geschrieben oder
          konnte nicht gefunden werden.
          ""$CS"" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
          C:\Users\icedeath>if [ "$CS" = "ON" ] ; then
          C:\Users\icedeath>

          Kommentar


            #6
            Ah. Also... batch Dateien sind komplett anders als Shell Scripte. Entsprechend musst Du natürlich (selbst bei quasi identischen Befehlen) die Syntax anpassen.
            Code:
            \@echo off
            rem den backslash entfernen, im forum wird die zeile ohne den backslash fehlerhaft dargestellt
            set file = %TMP%\curl.txt
            c:\curl -s --header "Content-Type: text/plain" "http://192.168.2.116:8080/rest/items/Light_SZ_Schrank/state" > %file%
            rem c:\curl mit dem kompletten Pfad und dem kompletten Namen zu curl ersetzen
            rem evtl. curl ins gleiche Verzeichnis legen wie die Batchdatei
            set /p cs= < %file%
            del %file%
            set mycommand=ON
            if %cs%==ON (set mycommand=OFF)
            c:\curl --header "Content-Type: text/plain" --request POST --data "%mycommand%" http://192.168.2.116:8080/rest/items/Light_SZ_Schrank
            ohne Funktionsgarantie...
            Zuletzt geändert von udo1toni; 27.10.2016, 18:44.

            Kommentar


              #7
              Vielen Dank also muss es so aussehen?

              Code:
              @echo off
              set file = curl.txt
              c:\curl -s --header "Content-Type: text/plain" "http://192.168.2.116:8080/rest/items/Light_SZ_Schrank/state" > %file%
              set /p cs= < %file%
              del %file%
              set mycommand=ON
              if %cs%=ON (set mycommand=OFF)
              c:\crl --header "Content-Type: text/plain" --request POST --data "$COMMAND" http://192.168.2.116:8080/rest/items/Light_SZ_Schrank
              So bekomm ich ein syntax fehler...
              Zuletzt geändert von icedeath82; 27.10.2016, 09:16.

              Kommentar


                #8
                Code:
                c:\crl --header "Content-Type: text/plain" --request POST --data "$COMMAND" http://192.168.2.116:8080/rest/items/Light_SZ_Schrank
                curl ist falsch geschrieben....

                Kommentar


                  #9
                  oh habs berichtigt dennoch syntax fehler... hm warum ist immer alles so kompliziert

                  Kommentar


                    #10
                    Ersetze im curl Aufruf $COMMAND durch %mycommand%
                    Das war wohl noch ein Überbleibsel aus dem ersten Versuch.

                    Kommentar


                      #11
                      ok also code sieht nun so aus

                      Code:
                      @echo off
                      set file = curl.txt
                      c:\curl -s --header "Content-Type: text/plain" "http://192.168.2.116:8080/rest/items/Light_SZ_Schrank/state" > %file%
                      set /p cs= < %file%
                      del %file%
                      set mycommand=ON
                      if %cs%=ON (set mycommand=OFF)
                      c:\curl --header "Content-Type: text/plain" --request POST --data %mycommand% http://192.168.2.116:8080/rest/items/Light_SZ_Schrank
                      geht aber immernoch nicht, ich habe jetzt mal jede Zeile einseln versucht keine Ahnung ob das sinn macht aber das hier kam dabei raus

                      Code:
                      C:\Users\icedeath>set file = curl.txt
                      
                      C:\Users\icedeath>c:\curl -s --header "Content-Type: text/plain" "http://192.168.2.116:8080/rest/items/Light_SZ_Schrank/state" > %file%
                      
                      C:\Users\icedeath>set /p cs= < %file%
                      
                      C:\Users\icedeath>del %file%
                      
                      C:\Users\icedeath>set mycommand=ON
                      
                      C:\Users\icedeath>if %cs%=ON (set mycommand=OFF)
                      "=ON" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
                      
                      C:\Users\icedeath>c:\curl --header "Content-Type: text/plain" --request POST --data %mycommand% http://192.168.2.116:8080/rest/items/Light_SZ_Schrank
                      
                      C:\Users\icedeath>

                      Kommentar


                        #12
                        Sorry, es muss natürlich if %cs%==ON heißen.

                        Ach so: Man sollte es vermeiden, Programme im Wurzelverzeichnis unterzubringen. Lege curl besser in ein Unterverzeichnis (genau wie die Batchdatei).
                        Und noch ein weiterer Vorschlag: set file = %TMP%\curl.txt ist besser, damit wird die temporäre Datei in dem passenden Verzeichnis angelegt (hab ich in meinem Ursprungsposting angepasst).
                        Zuletzt geändert von udo1toni; 27.10.2016, 18:44.

                        Kommentar


                          #13
                          ok bat datei sieht nun so aus

                          Code:
                          @echo off
                          set file = %TMP%\curl.txt
                          c:\curl\curl.exe -s --header "Content-Type: text/plain" "http://192.168.2.116:8080/rest/items/Light_SZ_Schrank/state" > %file%
                          set /p cs= < %file%
                          del %file%
                          set mycommand=ON
                          if %cs%==ON (set mycommand=OFF)
                          c:\curl\curl.exe --header "Content-Type: text/plain" --request POST --data %mycommand% http://192.168.2.116:8080/rest/items/Light_SZ_Schrank
                          curl habe ich in einen Unterordner... leider immer noch Syntax Fehler...

                          Kommentar


                            #14
                            Dann mach mal das '@echo off' raus, dann kannst Du sehen, in welcher Zeile der Fehler auftritt (weil beim Aufruf jede Zeile ausgegeben wird)

                            Kommentar


                              #15
                              ok das hier kommt dabei raus

                              Code:
                              C:\Users\icedeath>set file = C:\Users\icedeath\AppData\Local\Temp\curl.txt
                              Syntaxfehler.
                              
                              C:\Users\icedeath>c:\curl\curl.exe -s --header "Content-Type: text/plain" "http://192.168.2.116:8080/rest/items/Light_SZ_Schrank/state" >
                              
                              C:\Users\icedeath>

                              Kommentar

                              Lädt...
                              X