Хочу создать консольное приложение, которые бы подключается к 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());
}
}
Решил свой вопрос, админу дал права на базу данных, кому интересно вот решение на 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();
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости