Смена ip на роутере Zyxel(и не только), если у вас динамический ip от провайдера через telnet(если нет ssh для управления роутером) средствами c#

bhairava7

Client
Регистрация
18.08.2015
Сообщения
154
Благодарностей
15
Баллы
18
Исходник
C#:
using System;
using System.Text;
using System.Net.Sockets;

namespace SimpleTelnet
{
    public class TelnetConnection
    {
        readonly TcpClient tcpSocket;
        readonly int TimeOutMs = 100;

        public TelnetConnection(string Hostname, int Port)
        {
            tcpSocket = new TcpClient(Hostname, Port);
            System.Threading.Thread.Sleep(2500);
        }

        public string Login(string Username, string Password, int LoginTimeOutMs = 1000)
        {   
            SendCommand(Username);
            System.Threading.Thread.Sleep(LoginTimeOutMs);
            SendCommand(Password);
  
            return "authorized";
        }

        public void SendCommand(string cmd)
        {
            Write(cmd + Environment.NewLine);
            System.Threading.Thread.Sleep(TimeOutMs);         
        }

        public void Write(string cmd)
        {
            if (!tcpSocket.Connected) return;
            byte[] buf = ASCIIEncoding.ASCII.GetBytes(cmd.Replace("\0xFF", "\0xFF\0xFF"));
            tcpSocket.GetStream().Write(buf, 0, buf.Length);
        }
    }
}
Скомпилировать можно к примеру в dll и подключить к проекту, но это не обязательно как вы понимаете.

Вызов
TelnetConnection tc = new TelnetConnection("192.168.1.1", 23);
tc.Login("admin", "пароль от роутера", 2000);

//команды других производителей роутеров гуглятся
tc.SendCommand("interface (PPPoE0 или ISP)")
tc.SendCommand("no up");
System.Threading.Thread.Sleep(5000);
tc.SendCommand("up");
System.Threading.Thread.Sleep(5000);
 
  • Спасибо
Реакции: morpheus93

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)