Sto utilizzando fabric
per eseguire una distribuzione remota della mia app su un server rackspace. Ho provato i miei script su macchine virtuali usando lo stesso sistema operativo (Ubuntu Server 10.04) sul mio computer di casa e sembrano funzionare tutti.Impossibile utilizzare fabric put - È necessaria una configurazione del server?
Stranamente, tutti i comandi di fabric put
falliscono sul server reale. Tutti gli altri comandi (run
, cd
, sudo
, ecc.) Sembrano funzionare correttamente.
Questo accade solo quando rivolgendosi a questo server specifico, questo è il comando eseguo:
fab test --host remote-server
remote-server
è un alias sul mio .ssh/config
. La mia fabfile:
@task
def test():
sudo("echo testing")
put("/tmp/file.txt", "/tmp/")
tmp/test_file.txt
è solo un file di testo che sto utilizzando per i miei test
Questa è l'uscita
[remote-server] Executing task 'test'
[remote-server] sudo: echo testing
[remote-server] out: testing
Traceback (most recent call last):
File "/home/user/env/lib/python2.6/site-packages/fabric/main.py", line 712, in main
*args, **kwargs
File "/home/user/env/lib/python2.6/site-packages/fabric/tasks.py", line 298, in execute
multiprocessing
File "/home/user/env/lib/python2.6/site-packages/fabric/tasks.py", line 197, in _execute
return task.run(*args, **kwargs)
File "/home/user/env/lib/python2.6/site-packages/fabric/tasks.py", line 112, in run
return self.wrapped(*args, **kwargs)
File "/home/user/project/fabfile/__init__.py", line 33, in test
put("/tmp/file.txt", "/tmp/")
File "/home/user/env/lib/python2.6/site-packages/fabric/network.py", line 457, in host_prompting_wrapper
return func(*args, **kwargs)
File "/home/user/env/lib/python2.6/site-packages/fabric/operations.py", line 338, in put
ftp = SFTP(env.host_string)
File "/home/user/env/lib/python2.6/site-packages/fabric/sftp.py", line 20, in __init__
self.ftp = connections[host_string].open_sftp()
File "/home/user/env/lib/python2.6/site-packages/ssh/client.py", line 399, in open_sftp
return self._transport.open_sftp_client()
File "/home/user/env/lib/python2.6/site-packages/ssh/transport.py", line 844, in open_sftp_client
return SFTPClient.from_transport(self)
File "/home/user/env/lib/python2.6/site-packages/ssh/sftp_client.py", line 105, in from_transport
chan.invoke_subsystem('sftp')
File "/home/user/env/lib/python2.6/site-packages/ssh/channel.py", line 240, in invoke_subsystem
self._wait_for_event()
File "/home/user/env/lib/python2.6/site-packages/ssh/channel.py", line 1114, in _wait_for_event
raise e
ssh.SSHException: Channel closed.
Disconnecting from [email protected] done.
C'è qualcosa che ho bisogno di configurare sul server remoto per essere in grado di inviare file usando put
?
Il tessuto utilizza SSH. Per 'put', potrebbe usare' scp' o 'sftp'.Prova ad usare 'scp' per caricare manualmente un file prima di assicurarti che il tuo ambiente funzioni bene con quello. – Drake
'scp' funziona,' sftp' no. Cercherò un modo per abilitare 'sftp' sul server. Grazie! Questo è l'output che ottengo quando si tenta di sftp al server: 'richiesta di sottosistema non riuscita sul canale 0 Impossibile leggere il pacchetto: connessione ripristinata dal peer' –
@Drake: c'è un modo per rendere fabric use scp piuttosto che sftp? – lpapp