Выполнить программу на Python из командной строки без файла скрипта

1

Я хочу выполнить программу python на удаленном сервере, не создавая сценарий. Удаленный сервер не позволяет мне создавать файлы в любом месте файловой системы.

Программа python имеет следующую структуру, хотя функции намного сложнее

def test2():
  print("test2")

def test_func():
  test2()
  print("test_func")

test_func()

Есть ли способ выполнить эту программу непосредственно из командной строки?
Я пробовал эти два подхода

  1. Передайте код с помощью опции python -c.
  2. Запустите интерактивный режим python и скопируйте код для запуска.

Я получаю ошибки в обоих случаях. Однако любой код без пользовательских функций может выполнять со вторым подходом. Можно ли получить код выше, не создавая локальный скрипт?

Теги:

3 ответа

2
Лучший ответ

я нашел решение, возможно, это поможет, вы можете использовать EOF

$ python << EOF
> def test2():
>   print("test2")
> 
> def test_func():
>   test2()
>   print("test_func")
> 
> test_func()
> EOF

# output
test2
test_func
  • 0
    @kaustubh я обновлю свой ответ, вы даже можете использовать python -c с тройными кавычками, это также будет работать
  • 0
    Нет причин для тройных кавычек, которые оцениваются оболочкой. Одиночные кавычки работают отлично, а также.
Показать ещё 6 комментариев
1

Вы все еще можете использовать функции в подходе, такие как ваш первый:

$ printf "def f():\n    print 'hello'\n\nf()" | python
hello
1

Если вы можете хранить свои источники python на HTTP-сервере, а на удаленном хосте устанавливается wget (или аналогичный)

$ wget -O - http://my.server.de/some/path/my_program.py | python

может быть дешевым способом достижения вашей цели.

Другая возможность, не связанная с HTTP-сервером, но вам понадобится scp или ssh на удаленном хосте

$ scp my_host:a_python_file.py /dev/stdout | python
$ ssh my_host 'cat a_python_file.py' | python

Ещё вопросы

Сообщество Overcoder
Наверх
Меню