Как указывалось ранее, пробел в URL может вызвать это, но также возможно, что ваша строка содержит неподдерживаемый символ. Например, если вы копируете и вставляете URL из PDF, Word или другого документа, он может содержать неподдерживаемые символы. На первый взгляд это выглядит хорошо, но не компилятор.
Чтобы исправить это, в вашем методе [NSURL URLWithString:@"http://blabhblabh"]
удалите всю строку кода, а не только URL-адрес, и вручную введите ссылку и метод.
Я рекомендую вызывать ssh как подпроцесс. Это надежно и портативно.
import subprocess
proc = subprocess.Popen(['ssh', 'user@host', 'cat > %s' % filename],
stdin=subprocess.PIPE)
proc.communicate(file_contents)
if proc.retcode != 0:
...
Вам придется беспокоиться о цитировании имени файла назначения. Если вам нужна большая гибкость, вы можете даже сделать это:
import subprocess
import tarfile
import io
tardata = io.BytesIO()
tar = tarfile.open(mode='w:gz', fileobj=tardata)
... put stuff in tar ...
proc = subprocess.Popen(['ssh', 'user@host', 'tar xz'],
stdin=subprocess.PIPE)
proc.communicate(tardata.getvalue())
if proc.retcode != 0:
...
Может потребоваться небольшая работа, потому что " скручено:
Вы хотите, чтобы вся функциональность ssh была реализована в виде библиотеки Python? Взгляните на paramiko, хотя я думаю, что он не перенесен на Python 3.0 (пока?).
Если вы можете использовать существующую установку ssh, вы можете использовать подпроцесс
, как описано Дитрихом, или (другой способ ) вы также можете использовать pexpect
( веб-сайт здесь ).