Я хочу выполнить программу python на удаленном сервере, не создавая сценарий. Удаленный сервер не позволяет мне создавать файлы в любом месте файловой системы.
Программа python имеет следующую структуру, хотя функции намного сложнее
def test2():
print("test2")
def test_func():
test2()
print("test_func")
test_func()
Есть ли способ выполнить эту программу непосредственно из командной строки?
Я пробовал эти два подхода
Я получаю ошибки в обоих случаях. Однако любой код без пользовательских функций может выполнять со вторым подходом. Можно ли получить код выше, не создавая локальный скрипт?
я нашел решение, возможно, это поможет, вы можете использовать EOF
$ python << EOF
> def test2():
> print("test2")
>
> def test_func():
> test2()
> print("test_func")
>
> test_func()
> EOF
# output
test2
test_func
Вы все еще можете использовать функции в подходе, такие как ваш первый:
$ printf "def f():\n print 'hello'\n\nf()" | python
hello
Если вы можете хранить свои источники 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
python -c
с тройными кавычками, это также будет работать