Seite 1 von 1

Unbekanntes Zeichen

Verfasst: Mittwoch 29. Juli 2015, 15:39
von Knuffi
Guten Tag zusammen,
ich bin bei einem Script auf diese Zeichen getroffen | (einfach ein senkrechter Schritt), in folgenden Zusammenhang:
echo "1234" | gnokii -entersecuritycode PIN.
Kann mir bitte jemand erklären was das für ein Zeichen ist und welche Funktion es hat.
Besten Dank
Knuffi

Re: Unbekanntes Zeichen

Verfasst: Mittwoch 29. Juli 2015, 15:55
von Kebap
Hallo Knuffi,
das ist kein Python Script, sondern anscheinend ganz normale Befehlszeilenkommandos. Deren Input/Output kann man "umlenken" mit < oder > usw, einfaches Beispiel wäre "dir > inhalt.txt" siehe z.B. hier: http://linuxcommand.org/lts0060.php - Das Zeichen in deinem Beispiel heißt "pipe", und dadurch wird der Output des einen Kommandos zum Input des nächsten, super praktisch!

Re: Unbekanntes Zeichen

Verfasst: Mittwoch 29. Juli 2015, 15:56
von BlackJack
@Knuffi: Das findet man doch tatsächlich unter dem Lemma „Senkrechter Strich“ bei Wikipedia (und da den Abschnitt „Programmierung“): https://de.wikipedia.org/wiki/Senkrecht ... rammierung

Edit: In Python ist das übrigens ein binärer Operator der Beispielsweise bei ganzen Zahlen eine bitweise „oder“-Verknüpfung bewirkt, oder bei der Pyparsing-Bibliothek für Alternativen verwendet wird.

Re: Unbekanntes Zeichen

Verfasst: Mittwoch 29. Juli 2015, 16:06
von Knuffi
Oh jehh,
erstmal herzliche Dank für die Hilfe. Wenn das keine Pythonscript ist (ist wohl eine bash Datei), wie kann ich diese Zeile in ein Pythonscript integrieren.

Der Hintergedanke ist, dass ich mein Haus (I2C Bus ca. 200m Leitung - Heizung, Rolläden, Alarmanlage, Medienserver usw.) mit einem Raspberry steuere. Die Software ist mit Python geschrieben. Jetzt möchte ich, wenn die Bewegungsmelder dem Raspberry Alarm signalisieren, das mir eine SMS dieses auf mein Handy meldet- natürlich nur bei meiner Abwesenheit.
Über den LXterminal kann ich die SMS sauber versenden aber eben noch nicht software mässig.
Gruß
Knuffi

Re: Unbekanntes Zeichen

Verfasst: Mittwoch 29. Juli 2015, 16:12
von BlackJack
@Knuffi: Du startest gnokii mittels `subprocess`-Modul, leitest `stdin` mittels `subprocess.PIPE`-Argument um und verwendest dann am besten die `communicate()`-Methode von dem `Popen`-Exemplar. Die Dokumentation vom `subprocess`-Modul hat einen Abschnitt mit Beispielen.

Re: Unbekanntes Zeichen

Verfasst: Mittwoch 29. Juli 2015, 17:12
von Knuffi
Besten Dank für die Hilfe. Werde mich über die Empfehlungen kundigmachen.
Gruß
Knuffi

Re: Unbekanntes Zeichen

Verfasst: Mittwoch 29. Juli 2015, 22:04
von BlackJack
Ungetestet:

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf8
from __future__ import absolute_import, division, print_function
from subprocess import Popen, PIPE


def main():
    gnokii = Popen(['gnokii', '-entersecuritycode', 'PIN'], stdin=PIPE)
    gnokii.stdin.write('1234\n')
    gnokii.stdin.close()
    exit_code = gnokii.wait()
    if exit_code != 0:
        print('Error: Gnokii exit code:', exit_code)


if __name__ == '__main__':
    main()