【C#】实现Linux多连接与批量操作
0.背景
由于现在工作需要,我要对很多Linux进行批量的安装docker配置hostname、host等等,所以制作一个批量部署的工具就很有必要的,这次我们用到了SSH.NET
1.在项目中添加SSH.NET

2.简单的调用SSH.NET
private static string host = "xxx.xxx.xxx.xx";
private static string username = "root";
private static string password = "pwd";
// Setup Credentials and Server Information
public static ConnectionInfo ConnNfo = new ConnectionInfo(host, 22, username,
new AuthenticationMethod[]{
// Pasword based Authentication
new PasswordAuthenticationMethod(username,password),
// Key Based Authentication (using keys in OpenSSH Format)
//new PrivateKeyAuthenticationMethod("username",new PrivateKeyFile[]{
// new PrivateKeyFile(@"..\openssh.key","passphrase")
//}),
}
);
static void Main(string[] args)
{
ExecuteCommand1();
ExecuteCommand2();
Upload();
Console.ReadLine();
}
/// <summary>
/// 开始
/// </summary>
public void Start()
{
using (var client = new SshClient(host, username, password))
{
try
{
string command = "ls";
client.Connect();
string result = client.RunCommand(command).Execute();
Console.WriteLine(result);
client.Disconnect();
}
catch (Exception e1)
{
Console.WriteLine(e1.Message);
}
}
}
/// <summary>
/// 执行 command
/// </summary>
public static void ExecuteCommand1()
{
using (var sshclient = new SshClient(ConnNfo))
{
sshclient.Connect();
using (var cmd = sshclient.CreateCommand("cd /local && ls"))
{
string result = cmd.Execute();
Console.WriteLine("Command>" + cmd.CommandText);
Console.WriteLine("Return Value = {0}", cmd.ExitStatus);
Console.WriteLine("result>" + result);
}
sshclient.Disconnect();
}
}
/// <summary>
/// 执行 command
/// </summary>
public static void ExecuteCommand2()
{
// Execute (SHELL) Commands
using (var sshclient = new SshClient(ConnNfo))
{
sshclient.Connect();
// quick way to use ist, but not best practice - SshCommand is not Disposed, ExitStatus not checked...
Console.WriteLine(sshclient.CreateCommand("cd /local && ls -lah").Execute());
Console.WriteLine(sshclient.CreateCommand("pwd").Execute());
Console.WriteLine(sshclient.CreateCommand("cd /local/soft && ls -lah").Execute());
sshclient.Disconnect();
}
}
/// <summary>
/// 上传
/// </summary>
public static void Upload()
{
using (var sftp = new SftpClient(ConnNfo))
{
string uploadfn = "Renci.SshNet.dll";
sftp.Connect();
sftp.ChangeDirectory("/local/soft");
using (var uplfileStream = System.IO.File.OpenRead(uploadfn))
{
sftp.UploadFile(uplfileStream, uploadfn, true);
}
sftp.Disconnect();
}
}
等我做好之后会简单的传一份上来的!
本文出自《粉墨记忆》 => 《【C#】实现Linux多连接与批量操作》
转载时请注明出处及相应链接,
本文地址:https://www.fmxk.ac.cn/?post=6
WRITTEN BY
一名软件开发者,平时把自己的学习成果放在博客上面,也会放一些自己在用的小工具,有问题大家可以留言,我们一起讨论哦!