С# ssh клиент добавить логин и пароль “su”

198
20 октября 2018, 13:30

Хочу создать консольное приложение, которые бы подключается к Linux серверу, делает бэкап и выгружает все это в exel. Проблема встала на авторизации пользователя, 1я авторизация администратора проходит, далее в консоль нужно прописать su и пароль (как в putty), гуглил команды разные пробовал не получается

      public static void Main(string[] args)
    {
        PasswordConnectionInfo connectionInfo = new PasswordConnectionInfo("address", 22, "admin", "password");
        connectionInfo.Timeout = TimeSpan.FromSeconds(30);
        using (var client = new SshClient(connectionInfo))
        {
            try
            {
                Console.WriteLine("Trying SSH connection...");
                client.Connect();
                using (var cmd = client.RunCommand("echo -e 'mypassword\n' | sudo -S iptables -L -n"))
                {
                    if (cmd.ExitStatus == 0)
                        Console.WriteLine(cmd.Result);
                    else
                        Console.WriteLine(cmd.Error);
                }
                if (client.IsConnected)
                {
                    Console.WriteLine("SSH connection is active: {0}", client.ConnectionInfo.ToString());
                }
                else
                {
                    Console.WriteLine("SSH connection has failed: {0}", client.ConnectionInfo.ToString());
                }
                Console.WriteLine("\r\nTrying port forwarding...");
                var portFwld = new ForwardedPortLocal(IPAddress.Loopback.ToString(), "127.0.0.1", 3306);
                client.AddForwardedPort(portFwld);
                portFwld.Start();
                if (portFwld.IsStarted)
                {
                    Console.WriteLine("Port forwarded: {0}", portFwld.ToString());
                }
                else
                {
                    Console.WriteLine("Port forwarding has failed.");
                }
            }
            catch (SshException e)
            {
                Console.WriteLine("SSH client connection error: {0}", e.Message);
            }
            catch (System.Net.Sockets.SocketException e)
            {
                Console.WriteLine("Socket connection error: {0}", e.Message);
            }
        }
        Console.WriteLine("\r\nTrying database connection...");//Здесь он и срывается
        DBConnect dbConnect = new DBConnect("127.0.0.1", "dbname", " dbuser", "dbpassword", "4479");
        //Console.ReadLine();
        var ct = dbConnect.Count("packages");
        Console.WriteLine(ct.ToString());
    }
}
Answer 1

Решил свой вопрос, админу дал права на базу данных, кому интересно вот решение на ssh + экспорт + база mysql в exel

var ci =
        new ConnectionInfo(
        "idserver", "user", new PasswordAuthenticationMethod("user", "password"));
        using (var client = new SshClient(ci))
        {
            client.Connect();
            if (client.IsConnected) //This part works fine - I can connect to my Webserver.
            {
                //not sure if this is correct in our context.
                var forwardedPort = new ForwardedPortLocal("127.0.0.1", "127.0.0.1", 3306);
                client.AddForwardedPort(forwardedPort);
                forwardedPort.Start();
                string connStr =
                  string.Format(
                    "Server = {0};Port = {1};Database = dbname;Uid = usernamedb;Pwd = password;",
                    forwardedPort.BoundHost, forwardedPort.BoundPort);
                MySqlConnection sql = new MySqlConnection(connStr);
                try
                {
                    sql.Open();
                    MySqlCommand com = new MySqlCommand(" SELECT *", sql);
                    MySqlDataAdapter data = new MySqlDataAdapter(com);
                    DataTable dat = new DataTable("aster");
                    data.Fill(dat);
                    DateTime date = DateTime.Now;
                    int t = date.Hour;
                    int t1 = date.Minute;
                    int t2 = date.Second;
                    int m = date.Month;
                    int d = date.Day;
                    dat.WriteXml("D:\\agent" + t + " - " + t1 + " - " + t2 + " - " + d + " - " + m + ".xls");
                    forwardedPort.Stop();
                }
READ ALSO
Не обновляется изображение в Image

Не обновляется изображение в Image

Есть <Image x:Name="Zoomage" Height="100" Width="150" RenderTransformOrigin="05,0

218
Миграция на Microsoft.EntityFrameworkCore.SqlServer и JetBrains Rider

Миграция на Microsoft.EntityFrameworkCore.SqlServer и JetBrains Rider

Нужно что бы работало вот так First EF Core Console Application

223
Переопределение метода c#

Переопределение метода c#

Вопрос слегка глуповат, но в то же время я не нашел ответа на него

229
Как сообщать команде, что пора выполнить CanExecute? с# WPF MVVM

Как сообщать команде, что пора выполнить CanExecute? с# WPF MVVM

Недавно начал изучать MVVM и пока от него больше проблемА то что называют слабой связанностью - для меня скорее "Слабо отслеживаемое поведение"

236