Страница 1 из 1

[IPC::Run, Expect] SU pass - in prompt_echo_off(): tcgetattr

Добавлено: 2010-09-26 0:36:29
ProFTP
хотел напистаь не большой скрипт, чтобы просто в консоле перейти в ROOT и чтобы не вводить пароль в su, но не тут то было
...что-то не работает:

Код: Выделить всё

use IPC::Run qw(run timeout start harness);

my @cmd;

push @cmd, "/usr/bin/su";

my $in = "passwd"; 
 my  $out="";
my   $err="";

 #  my $h = run3 \@cmd,\$in,\$out,\$err; #timeout('30'); #timeout($self->{_timeout});
      start \@cmd, '<pty<', \$in, '>pty>', \$out, '2>', \$err;

     printf STDERR "\n\n> output: %s \n> result: %s\n\n",$out,$?; 

print $err;


в auth.log ошибка:
если так:

Код: Выделить всё

 #  my $h = run3 \@cmd,\$in,\$out,\$err; #timeout('30'); #timeout($self->{_timeout});
Sep 23 21:11:48 the su: in prompt_echo_off(): tcgetattr(): Inappropriate ioctl for device
Sep 23 21:11:48 the su: BAD SU ddd to root on tty
если так:

Код: Выделить всё

       start \@cmd, '<pty<', \$in, '>pty>', \$out, '2>', \$err;
Sep 23 22:27:56 the su: in prompt_echo_off(): tcgetattr(): Device not configured
Sep 23 22:27:56 the su: BAD SU ddd to root on tty
OS: FreeBSD
вообщем, решение не нашел и не понял, почему так... вродебы все правильно..

Re: [IPC::Run, Expect] SU pass - in prompt_echo_off(): tcget

Добавлено: 2010-09-26 1:12:50
Гость
su предполагает ввод с клавиатуры а не с потока ввода вывода

Re: [IPC::Run, Expect] SU pass - in prompt_echo_off(): tcget

Добавлено: 2010-09-26 1:55:10
ProFTP
а съемулировать это нельзя?

а в данном случае, вродебы, эмулируется именно ввод с клавиатуры...?
а в чем смысл просто вводить "поток ввода вывода", для чего он нужун?