Как избежать команды Linux, которая имеет все символы, такие как одинарные кавычки, двойные кавычки (', ",`) в Python? - PullRequest
1 голос
/ 10 октября 2019

У меня есть следующая команда Linux, которая дает такие метрики, как CPU%, RAM% и процент жесткого диска.

echo "CPU `LC_ALL=C top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}'`% RAM `free -m | awk '/Mem:/ { printf("%3.1f%%", $3/$2*100) }'` HDD `df -h / | awk '/\// {print $(NF-1)}'`"

Я хочу сохранить ее в переменной в виде строки. Но я не могу сохранить из-за использования `, ',' в команде Linux. Как я могу заставить это работать?

Примечание: я сохраняю это как строку в переменной, потому чтоЯ хочу проверить такие показатели, как CPU%, RAM% и процент жесткого диска, выполнив команду ssh на сервере и выполнив вышеуказанную команду с помощью библиотеки pexpect / pxssh в python.

Ответы [ 2 ]

1 голос
/ 10 октября 2019

Необработанные строки в тройных кавычках идеально подходят для этой цели

cmd = r'''
echo "CPU `LC_ALL=C top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}'`% RAM `free -m | awk '/Mem:/ { printf("%3.1f%%", $3/$2*100) }'` HDD `df -h / | awk '/\// {print $(NF-1)}'`"
'''
0 голосов
/ 10 октября 2019

Вы можете просто избежать своих кавычек и двойных кавычек с помощью \

...