Skocz do zawartości

Linux, Python i (na przykład) RPi: zdalne uruchamianie programów z poziomu Geany


ethanak

Pomocna odpowiedź

Dzisiaj naprawdę krótko.

Ostatnio dość często muszę uruchamiać programy w Pythonie (nad którymi pracuję) na zdalnych maszynach. Normalnie jest to proste: mam otwarty terminal, loguję się przez ssh na zdalną maszynę i wydaję polecenie uruchomienia programu.
Cóż - wrodzone lenistwo kazało mi uprościć tę czynność 🙂

Założenia:

  • systemem na którym pracuję lokalnie jest Linux, taki też jest na zdalnej maszynie;
  • katalog z programem mam podmontowany przez sshfs (np. przez wpis w fstab, programem Gigolo lub poleceniem 'gio mount')
  • używany przeze mnie edytor to Geany

Ponieważ Geany potrafi przyporządkować polecenie "Execute" do konkretnego typu pliku, postanowiłem zmienić nieco domyślne ustawienia dla Pythona. Prawdopodobnie można to zrobić dla innych edytorów, ale akurat tego używam.

Zacząłem od napisania prostego programu, który odróżnia plik lokalny od zdalnego i w zależności od tego albo wywołuje lokalnie Pythona, albo robi to na zdalnej maszynie:

#!/usr/bin/env python3
import sys, os

dy = sys.argv[1]
fn = sys.argv[2]

import re
r=re.search(r'sftp:host=(.*?),user=(.*?)(/.*)$',dy)
if not r:
    os.execl('/usr/bin/python3','python3',fn)
    
host=r.group(1)
user=r.group(2)
dry=r.group(3)
import shlex
cmd=shlex.join(['cd',dry]) + ' && ' + shlex.join(['/usr/bin/python3',fn])
os.execl('/usr/bin/ssh','ssh',user+'@'+host,cmd)

Program (nazwałem go pyssh.py) wrzuciłem sobie do ~/bin

W Geany otworzyłem dowolny plik w Pythonie (aby powiedzieć mu, że ten język mnie interesuje). W menu "Zbuduj" wybrałem "Zdefiniuj polecenia budowania".
Teraz w polu Execute w miejscw domyślnego:

python3 "%f"

wpisałem wykonanie mojego programu:

python3 /home/ethanak/bin/pyssh.py "%d" "%f"

Jak widać przekazuję tam nazwę katalogu w którym siedzi plik oraz nazwę samego pliku.

Program na podstawie nazwy katalogu decyduje, czy ma odpalić Pythona lokalnie, czy zalogować się na zdalny host, ustawić ścieżkę i tam wywołać Pythona.

Proste... a jak umila życie, wystarczy F5 zamiast wpisywania polecenia 🙂
 

  • Lubię! 2
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.