#python #python-3.x
Вопрос:
мы используем python3 на наших Linux-машинах
Я пытаюсь передать переменную IP
в cmd
#!/usr/bin/python3
import sys, os, logging
import subprocess
IP = '127.0.0.1'
COMMAND = "ping -c 3 IP"
subprocess.call(COMMAND, shell=True)
subprocess.Popen(COMMAND,stdin=subprocess.PIPE,stdout=subprocess.PIPE, shell=True).stdout.read()
так как мы получаем ошибку о ping: unknown host IP
Я думаю о том , как передать переменную IP, чтобы позже я мог выполнить cmd с subprocess.call
и subprocess.Popen
Ответ №1:
Вместо того, чтобы предоставлять его в COMMAND
виде строки, безопаснее предоставить его в виде списка и оставить shell
значение по умолчанию False
равным . Таким образом, вам не нужно выполнять экранирование оболочки в случае, если какие-либо аргументы содержат «специальные» символы, такие как пробелы:
COMMAND = ["ping", "-c", "3"]
subprocess.call(COMMAND [IP])
Ответ №2:
Вам нужно вставить содержимое IP
в COMMAND
. Здесь вы можете просто добавить строки, подобные этой:
COMMAND = "ping -c 3 " IP
Комментарии:
1. Для кого-то, чье имя пользователя и аватар ссылаются на этот комикс xkcd, это особенно злой ответ 😉 Мой IP-адрес случайно
1.1.1.1; rm -rf /
.2. Я бы солгал, если бы сказал, что у меня не было точно такой же мысли, когда я печатал этот ответ.