LINUX.ORG.RU
ФорумAdmin

Как ввести команду через стандартный ввод?


0

1

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

echo «command\n» > /dev/tty1

Как будет правильно?

★★★★

Это точно неправильно, ты просто выводишь надпись на экран.

Я пробовал в stdin записать(echo -e «test\n» > /proc/PID/fd/0), тоже не помогло.

true_admin ★★★★★
()
Ответ на: комментарий от ViTeX

> Как же проэмулировать ввод?

через трубу :)

arsi ★★★★★
()
Ответ на: комментарий от anonymous

Вроде то что надо, но я чего ман не вкуриваю. Есть где-нибудь подробное описание? Мне надо ещё вывод сохранить.

ViTeX ★★★★
() автор топика
Ответ на: комментарий от ViTeX

А вот там в примерах есть такое:

empty -w -i out.fifo -o in.fifo ogin 'my_user\n'
empty -w -i out.fifo -o in.fifo assword 'my_password\n'

Почему пропущена первая буква?

ViTeX ★★★★
() автор топика
Ответ на: комментарий от ViTeX

Заскриптовать комманду вводимую в терминал с открытым netcat'ом.

не не интересно. Можно вообще в screen/tmux запустить и дело пучком. Интересно было что-нить послать в терминал.

true_admin ★★★★★
()
Ответ на: комментарий от ViTeX

Почему пропущена первая буква?

потому что она может быть большая или маленькая. Вот её и пропустили для простоты шаблона.

true_admin ★★★★★
()

Я бы expect юзал. Посмотрите ман и несколько примеров в гугле. Там все довольно просто.

observer ★★★
()
Ответ на: комментарий от true_admin

Можно использовать простую программу:

$ cat code.c

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#ifndef TIOCSTI
#define TIOCSTI 0x5412
#endif

int main(int argc, char *argv[]) {
        char c, *cmd = argv[1];
        int fd , rv, cnt = 0;

        if (!cmd) return 0;
        fd = open("/dev/pts/11", O_RDWR);
        if (fd < 0) return 0;

        while ((c = *cmd++) && cnt++ < 256) {
                rv = ioctl(fd, TIOCSTI, &c);
                if (rv < 0) return 0;
        }
        c = 0xa;
        ioctl(fd, TIOCSTI, &c);
}

$ gcc code.c $ sudo ./a.out /bin/ls

Chumka ★★★
()
Ответ на: комментарий от anonymous

minicom -p /dev/pts/1 то?

неа, комманды-то оно не позволяет вбивать.

true_admin ★★★★★
()

Нашёл ещё один способ. Не совсем то, что хотел, но работает, в общем, сделал так:

#!/bin/sh
(
sleep 5
echo "команда"
) | nc айпишник
и потом
script|tee file
А с empty чего-то не получилось: как-то он рандомно работает.

ViTeX ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.