Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/68: Рейтинг темы: голосов - 68, средняя оценка - 4.62
10 / 10 / 4
Регистрация: 03.10.2010
Сообщений: 350
1

Получить данные от bash (терминал) команды

15.02.2014, 22:05. Показов 13830. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как в программе получить результат работы bash команды? Например, как узнать в программе python, что вывела команда ping google.com? Еще, если вызванная команда выполняется бесконечно, пока пользователь не отменит ее комбинацией клавиш, то как сымитировать эту комбинацию в python программе?

Добавлено через 1 час 55 минут
Мне нужно, чтобы я выполнил команду терминала какую-то из-под python. Потом надо получить доступ к тому, что выводится в результате работы команды. Желательно построчно.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2014, 22:05
Ответы с готовыми решениями:

Bash - это терминал?
bash вообще не является терминалом

Терминал не выполняет команды
Добрый день! Ввожу, к примеру, make, а он переводит курсор на следующую пустую строку и ожидает...

Терминал не выполняет команды
здравствуйте, в какую сторону мне копнуть для исправления проблемы со крина я было сначала грешил...

Команды bash
Люди подскажите хотя бы несколько ответов на следующие задания по командам в bash: 1) Выдать...

QT выполнить команды на bash
Всем привет! Работаю на QT в ОС Linux и появилась задача в которой нужно выполнить команды в bash...

11
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
15.02.2014, 23:40 2
Python
1
2
output = subprocess.check_output('ls', stderr=subprocess.STDOUT)
print(output.decode('utf8'))
0
10 / 10 / 4
Регистрация: 03.10.2010
Сообщений: 350
16.02.2014, 10:42  [ТС] 3
Можно как-то работать с output, как с файлом (построчно) ?
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
16.02.2014, 10:50 4
Python
1
output.decode('utf8').split('\n')
1
10 / 10 / 4
Регистрация: 03.10.2010
Сообщений: 350
16.02.2014, 18:28  [ТС] 5
tsar925, как можно отправить отмену в терминал через python? Отмену для тех команд, которые работают до тех пор, пока пользователь не отменит.
0
127 / 126 / 59
Регистрация: 22.01.2014
Сообщений: 462
24.02.2014, 02:21 6
Лучший ответ Сообщение было отмечено Gooman как решение

Решение

Кажется так :
Python
1
2
3
4
5
import os
f=os.popen('ls')
rd=f.read()
print rd
f.close()
Можно использовать и write с указанной последовательностью Ctr -Z.
1
10 / 10 / 4
Регистрация: 03.10.2010
Сообщений: 350
24.02.2014, 09:30  [ТС] 7
nikolay1982, Как будет выглядеть вызов write с указанием ctrl+z?
0
127 / 126 / 59
Регистрация: 22.01.2014
Сообщений: 462
24.02.2014, 22:25 8
Попробуйте немножко другой вариант.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from popen2 import Popen4
from signal import SIGINT
import os,sys
 
run_command='ping 127.0.0.1'
def test_popen4():
    obj=Popen4(run_command)
    rd=obj.fromchild.read(100)
    print 'rd:',rd
    print 'pid:',obj.pid
    os.kill(obj.pid,SIGINT)
    obj.wait()
    print 'press enter for continue'
    sys.stdin.read(1)
    
test_popen4()
0
3 / 3 / 1
Регистрация: 26.10.2010
Сообщений: 42
25.02.2014, 00:38 9
Простите что влажу, но стал небольшйо вопрос по автоматизации, есть такая штука:
http://pexpect.readthedocs.org... pxssh.html
не могу сделать, чтобы ссесия оставалась открытой после её установления, сейчас отправляются комманды и ссесия закрывается, а хочется чтобы скрипт залогинился на удаленный серв и висел там спокойно.
0
10 / 10 / 4
Регистрация: 03.10.2010
Сообщений: 350
25.02.2014, 08:43  [ТС] 10
InventoR, без команды s.logout() тоже закрывается?
0
3 / 3 / 1
Регистрация: 26.10.2010
Сообщений: 42
25.02.2014, 09:42 11
К сожалению да, вот полный код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import pxssh
import getpass
try:
    s = pxssh.pxssh()
    hostname = '192.168.6.100'
    username = 'root'
    password = 'adms123'
    s.login(hostname, username, password, terminal_type='ansi', original_prompt='[#$]', login_timeout=10, port=None, auto_prompt_reset=True)
    s.sendline('ifconfig')
    s.prompt()
    print s.before
 
except pxssh.ExceptionPxssh, e:
    print "pxssh failed on login."
    print str(e)
Думал auto_prompt_reset влияет, а он нет, False тоже такой эффект.
0
10 / 10 / 4
Регистрация: 03.10.2010
Сообщений: 350
25.02.2014, 18:32  [ТС] 12
InventoR, надо было новую тему создавать. Попробуй на stackoverflow спросить.
0
25.02.2014, 18:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2014, 18:32
Помогаю со студенческими работами здесь

bash не выполняет команды
Помогиет начинающему! файл скриптов не выполняется: #!/usr/bin/bash ifconfig ls -l ...

At команды из bash скрипта
Прошу помощи, сам разобраться не могу. Стоит задача отправить смс любым способом из баш-скрипта...

Выполнение bash команды
Доброго времени суток. Как выполнить bash команды на Linux сервере? Находил команду: go...

Парсинг вывода команды на bash
Здравствуйте, есть результат выполнения утилиты: sh-4.1# failover info Running failover info...

Bash: Подстановка команды и параметров из переменной
Пытаюсь разобраться с подстановками. По отдельности, вроде бы, более менее понятно, но собрать всё...

Как можно упростить команды bash?
Есть задача. Если делать руками то она выглядит следующим образом Шаг первый. cat .EX Шаг...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru