Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Python. Ввод из файла и вывод в файл.  (Прочитано 5004 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн buddser

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Python. Ввод из файла и вывод в файл.
« : 30 Января 2010, 19:32:51 »
Всем добрый вечер.
Начал изучать питон на досуге от нечего делать и решил свою курсовую переписать под питоновский tkinter, чтобы все графически было и удобно...
tkinter очень порадовал... но все еще разбираюсь с ним.

возник следующий вопрос.

Собственно как организовать вывод в файл данных из питона и считать потом их от туда?
Объясню что конкретно нужно...
1. есть слудующая строка:

Цитировать
subprocess.call("xterm ssh-keygen", shell=True)

как все что происходит во время исполнения данной команды сохранить в файл?

2. требуется войти в рута и исполнить комманду blkid, в результате все что появится так же сохранить в файл.

Сложность для меня в том что subprocess.call не воспринимает более 2-х отдельных комманд почему то...
А так же я непонимаю как войти в рута...

Да! забыл сказать все это происходит при нажатии на кнопки(tkinter) и программа запускается ярлыком с рабочего стола... тоесть не из консоли

Цитировать
python /home/serge/111/kyrs-rab5

вот таким образом...

Если можете люди добрые помогите студенту :) желательно бы ссылки где об этом можно почитать(можно на английском)
или уже готовый кусочек кода(но тоже желательно со ссылками где об этом почитать можно)


Пользователь решил продолжить мысль 30 Января 2010, 18:05:12:
Цитировать
f = open('output.txt', 'wr')
pickle.dump(subprocess.call("xterm ssh-keygen", shell=True), f)
f.close()

Вот такая конструкция пишет в файл только следующее:

Цитировать
I0
.

а мне нужно чтобы в файле было вот такое:

Цитировать
Generating public/private rsa key pair.
Enter file in which to save the key (/home/serge/.ssh/id_rsa): key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in key.
Your public key has been saved in key.pub.
The key fingerprint is:
16:35:40:82:ef:19:2f:6e:46:d2:5e:a4:8d:87:b8:04 serge@serge-laptop
The key's randomart image is:
+--[ RSA 2048]----+
|     ...o.o      |
|    .  . . .     |
|     .  .        |
|  E   o ..       |
|   . + XS        |
|    + X.=        |
|   . * +         |
|    . =          |
|     o           |
+-----------------+
« Последнее редактирование: 30 Января 2010, 20:46:26 от buddser »

Оффлайн Whiskey

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Python. Ввод из файла и вывод в файл.
« Ответ #1 : 01 Февраля 2010, 00:45:04 »
1.
r=subprocess.Popen("ssh-keygen", shell=True, stdout=subprocess.PIPE)
for line in r.stdout:
   print line

Только может быть часть вывода от ssh будет уходить не в stdout, а в stderr, но это аналогичным образом решается.

2.
Нужно настроить sudo-доступ без пароля (man sudoers), и запускать команду так: 'sudo blkid'

p.s. зачем запускать ssh-keygen из-под xterm? Вывод ssh-keygen'а уйдет в его окошко, а python-программа получит только то, что напечатает xterm - т.е. ничего.
p.p.s рекомендую экспериментировать с Python через оболочку IPython - будет намного интереснее :)

Оффлайн buddser

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Python. Ввод из файла и вывод в файл.
« Ответ #2 : 01 Февраля 2010, 12:37:46 »
Насчет первого спасибо огромное.

А вот насчет второго мне не пойдетскорее всего....

Потому что программу необходимо запускать на разных компьютерах и нужно чтобы ввод паролей в системе остался, не вариант ка каждом компьютере изменять на беспарольный вход... потом выполнять программу и потом менять все обратно...
Скорее интересен вариант где возможно как в синаптике при входе в программу спрашивается пароль или лучше при определенном шаге(нажатии на кнопку), потому что кнопок в программе будет много... и необходимость в судо есть только в нескольких кнопках

ssh-keygen нужно запускать под xterm для наглядности(это курсовой проект), насчет IPython почитаю спасибо.

Пользователь решил продолжить мысль 02 Февраля 2010, 09:08:26:
Сделал как вы написали ... не работает ...
« Последнее редактирование: 02 Февраля 2010, 09:08:26 от buddser »

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Python. Ввод из файла и вывод в файл.
« Ответ #3 : 02 Февраля 2010, 11:53:44 »
Скорее интересен вариант где возможно как в синаптике при входе в программу спрашивается пароль или лучше при определенном шаге(нажатии на кнопку), потому что кнопок в программе будет много... и необходимость в судо есть только в нескольких кнопках
Надо запускать gksu, gksudo или kdesu

ssh-keygen нужно запускать под xterm для наглядности(это курсовой проект),
Для наглядности надо добавить еще один print, чтобы скрипт сам писал в консоль то, что получает от ssh-keygen.
Еще почитайте man ssh-keygen - у этой утилиты есть параметры, если их не задать, она требует ввести их с клавиатуры.
А еще лучше поискать питоний модуль для работы с ssh и использовать функции питона, а не сторонних программ - гибче и красивей получится, хотя работы будет больше.
« Последнее редактирование: 02 Февраля 2010, 12:00:42 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн buddser

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Python. Ввод из файла и вывод в файл.
« Ответ #4 : 03 Февраля 2010, 19:47:00 »
Спасибо за совет, не знал что такой модуль есть у питона специально для работы с ssh...

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Python. Ввод из файла и вывод в файл.
« Ответ #5 : 04 Февраля 2010, 17:18:20 »
Я тоже не знал, я рекомендовал его поискать.
Поиск в гугле по словам python ssh выдал название модуля первой же ссылкой
sudo aptitude install python-paramiko
В следующих двух ссылках гугл выдал еще два названия.
« Последнее редактирование: 04 Февраля 2010, 17:23:11 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

 

Страница сгенерирована за 0.05 секунд. Запросов: 25.