2015-12-27 9 views
1

Я хочу создать программу на C, которая отображает пароль маршрутизатора, используя telnet-протокол. Инструкция, чтобы сделать это с ЦМД:Как использовать system() с telnet в C

  • открыт CMD
  • Тип telnet <router ip>
  • Тип маршрутизатора панель пользователя
  • Тип маршрутизатора панель пароль
  • Тип беспроводной умолчанию

Я стараюсь с

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main(int argc, char *argv[]) 
{ 
    system("telnet 192.168.1.1"); 
    system("Menara"); 
    system("Menara"); 
    system("wireless default"); 
    system("PAUSE");  
    return 0; 
} 

, но программа останавливается во втором аргументе, поэтому я предполагаю, что system() не может связываться с telnet. Может ли кто-нибудь дать мне правильный код?

+0

Может быть, [ 'popen'] (http://linux.die.net/man/3/popen) помогает. – Downvoter

+2

Каждый раз, когда вы вызываете 'system', он запускает новую независимую системную команду. Это доза не вводит материал в оболочку (если это процедура для этого, вам нужно будет сказать, в какой оболочке). –

+2

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

ответ

2

Вам нужно открыть трубу команде telnet и отправить ей команды. Посмотрите на функцию popen() на C и посмотрите на это StackOverflow question.

Вот пример кода (взятый из вопроса StackOverflow, что я просто указал ранее):

#include <stdio.h> 

int main() 
{ 
    FILE *fp = popen("telnet 192.168.1.1","w"); 

    fprintf(fp, "Menara\n"); 
    fprintf(fp, "Menara\n"); 
    fprintf(fp, "PAUSE\n"); 

    if (pclose(fp) != 0) { 
     /* Error reported by pclose() */ 
     fprintf (stderr, "Could not run more or other error.\n"); 
    } 

    return 0; 
} 
+0

Вам также нужно отправить 'wireless default'? В общих чертах это будет работать, отображая вывод из telnet в окне команд. Это не позволит программе фиксировать вывод из 'telnet'; для этого вам понадобятся две трубы: одна из программы на «telnet», а другая - «telnet» на программу. Это гораздо более сложно настроить - не невозможно, но смутно. –

+0

Хорошо, добавлено (чтобы точно следовать тому, что написано в исходном вопросе). – perror

+0

Можете ли вы рассказать мне, как создать вторую трубу? @JonathanLeffler – Mehdi