Unbekanntes Zeichen

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Knuffi
User
Beiträge: 60
Registriert: Dienstag 28. Oktober 2014, 19:52

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
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

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!
Zuletzt geändert von Kebap am Mittwoch 29. Juli 2015, 15:56, insgesamt 1-mal geändert.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
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.
Knuffi
User
Beiträge: 60
Registriert: Dienstag 28. Oktober 2014, 19:52

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
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.
Knuffi
User
Beiträge: 60
Registriert: Dienstag 28. Oktober 2014, 19:52

Besten Dank für die Hilfe. Werde mich über die Empfehlungen kundigmachen.
Gruß
Knuffi
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()
Antworten