[PYTHON] Remote-Befehl, der sich wie ein lokaler Befehl verhält

Einführung

Ich wollte einen Befehl, der sich wie ein lokaler Befehl verhält, weil er zum Erstellen eines Stubs benötigt wurde, aber die Befehlsergebnisse tatsächlich remote druckt.

Umgebung

OSX El Capitan

Wie benutzt man

Speichern Sie die Quelle mit dem Dateinamen ls. Erteilen Sie die Ausführungsberechtigung mit chmod + x ls. Alles was Sie tun müssen, ist ls.

Implementierung

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-

import sys
import os
from subprocess import call

argvs = sys.argv

param_hostname = '1.2.3.4'
param_username = 'docker'
param_port = '60000'
param_command = os.path.basename(argvs[0])
param_command_param = ' '.join(argvs[1:])

cmd = '/usr/bin/ssh -l %s -p %s %s %s %s' % (
        param_username, str(param_port), param_hostname, param_command, param_command_param)

call( cmd.strip().split(' ') )

Ergebnis

butada-mac:remote_exec_like_a_local butada$ ./ls -l

Referenz

nichts Besonderes

Recommended Posts

Remote-Befehl, der sich wie ein lokaler Befehl verhält
Führen Sie ein lokales Skript auf einem Remote-Host aus
Ein Allzweckprogramm, das Linux-Befehlszeichenfolgen mit Python formatiert
Führen Sie einen Befehl in Go wie Pythons subprocess.call aus (~, shell = True).
Ein Skript, das den laufenden CloudFormation-Stapel wie ein Mannequin anzeigt