Ich bin nicht genau sicher, was remoteRun();
in Ihrem Beispiel tun soll.
Ist dies ein Teil Ihrer Fabdatei oder ist dies Ihr Terminalbefehl zum Aufrufen des Skripts?
Der richtige Weg wäre ein Befehl wie dieser in Ihrer Shell:
fab remoteRun
Im Allgemeinen ist es besser, die konkreten Hosts, auf denen Ihr Befehl ausgeführt werden soll, wie folgt anzugeben:
def localhost():
env.hosts = [ '127.0.0.1']
def remoteRun():
print "ENV %s" %(env.hosts)
out = run('uname -r')
print "Output %s"%(out)
Sie können es wie folgt von einem Terminal aus starten (vorausgesetzt, Sie befinden sich in dem Verzeichnis, das Ihre fabfile enthält):
fab localhost remoteRun
Alternativ können Sie den Host auch mit dem Parameter -H angeben:
fab -H 127.0.0.1 remoteRun
Wenn Sie eine Liste von Hosts haben, für die Sie den Befehl aufrufen möchten, gehen Sie folgendermaßen vor: http://readthedocs.org/docs/fabric/latest/usage/execution.html
Angepasst an Ihr Beispiel:
env.hosts = [ 'localhost', '127.0.0.1']
def remoteRun():
print "ENV %s" %(env.hosts)
out = run('uname -r')
print "Output %s"%(out)
Und über angerufen: fab remoteRun
Auf diese Weise wird die remoteRun
wird auf allen Hosts in env.hosts
.