Доброго времени суток, у меня стоит интересная задачка в ходе корой мне необходимо менять пароль пользователя в ходе выполнения скрипта. Из всего что я знаю о фряхе я остановился на команде passwd, но так как она получает пароль только при вводе, пытался вызвать ее через popen и в поток забить новый пасс, но увы ничего не удалось... P.S. по факту мне нужно создать пользователя, но команда pw не принимает пароль, насколько я понял. и связи с этим приходится искать решение выше указанного геморроя
Ответ
Думаю, man 3 forkpty это то, что Вам нужно.
Там через псевдотерминал (pty) надо работать. В принципе, не очень сложно написать некий двунаправленный аналог popen() на псевдотерминале вместо pipe. Например, expect делает так в spawn
Например, можно почитать здесь. Или покороче здесь. Идея в том, что Вы делаете псевдотерминал (это как бы связка из двух устройств -- master и slave (ведет себя аналогично обычному tty)), делаете fork и там dup дескрипторов 0,1,2 на slave, после exec passwd она считает, что работает с терминалом. Родительский процесс обменивается байтиками по master
ответ составлен из комментариев, написанных avp к вопросу.
Комментариев нет:
Отправить комментарий