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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.