前言

批量登录SSH执行命令 ,把应急响应中的日志文件下载回来。

代码实现

Renci.SshNet编译出DLL,引用。

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using Renci.SshNet; namespace ConsoleApp1
{
class Program
{ static void Main(string[] args)
{
string host = "192.168.221.133";
string userName = "root";
string psw = "toor";
string finalCommand = @"mkdir /tmp/mytestwell/ && (ls -rtalc /etc > /tmp/mytestwell/etc_time.txt & ls -rtalc /etc/init.d > /tmp/mytestwell/init.d.txt & cp /etc/rc.7 /tmp/mytestwell/rc.7 & cp /etc/rc.8 /tmp/mytestwell/rc.8 & strings /usr/sbin/sshd | grep 'var' > /tmp/mytestwell/sshd_string.txt & cp /usr/sbin/sshd /tmp/mytestwell/sshd & cat /var/ilog > /tmp/mytestwell/ilog.txt & cat /var/Olog > /tmp/mytestwell/Olog.txt & ls -rtalc /var/cache/man/local/cat1/ > /tmp/mytestwell/cat1_bakdoor.txt & ls -rtalc /car/cache/man/local/cat9/ > /tmp/mytestwell/cat9_bakdoor.txt & stat /usr/sbin/sshd > /tmp/mytestwell/sshd_time.txt & ls -rtalc /bin > /tmp/mytestwell/bin_time_change.txt & ls -rtalc /usr/bin > /tmp/mytestwell/usr_bin_time_change.txt & ls -rtalc /usr/sbin > /tmp/mytestwell/usr_sbin_time_change.txt & ls -rtalc /etc/udev/udevd > /tmp/mytestwell/udevd_time.txt & ls -rtalc /bin/udevd > /tmp/mytestwell/bin_udevd_time.txt & ls -rtalc /tmp/linux64 > /tmp/mytestwell/tmp_linux64_time.txt & ls -rtalc /etc/init.d/network > /tmp/mytestwell/etc_init_d_network_time.txt & netstat -antlop > /tmp/mytestwell/netstat.txt & ls -rtalc /usr/bin/ > /tmp/mytestwell/usr_bin_time.txt & cat /etc/passwd | grep :0 > /tmp/mytestwell/etc_passwd_time.txt) && sleep 2 && tar -cvf /tmp/qax_check.tar /tmp/mytestwell/*";
ConnectionInfo conInfo = new ConnectionInfo(host, 22, userName, new AuthenticationMethod[]{
new PasswordAuthenticationMethod(userName,psw)
});
SshClient client = new SshClient(conInfo); try
{
client.Connect();
var outptu = client.RunCommand(finalCommand);
if (outptu != null)
{
Console.WriteLine(outptu.Result);
}
else
{
Console.WriteLine("not a string");
} }
catch (Exception ex)
{
Console.WriteLine(ex);
throw;
}
client.Disconnect();
client.Dispose(); /// SFTP获取文件部分 string localFileName = "D:\\q.tar"; //文件下载位置
string remoteFileName = $"/tmp/qax_check.tar";
string ftpServerIP = "192.168.221.133";
string ftpPort = "22";
string ftpUserID = "root";
string ftpPassword = "toor"; try
{
using (var sftp = new SftpClient(ftpServerIP, Convert.ToInt32(ftpPort), ftpUserID, ftpPassword))
{
sftp.Connect(); using (var file = File.OpenWrite(localFileName))
{
sftp.DownloadFile(remoteFileName, file);
} sftp.Disconnect(); Console.WriteLine($"下载文件成功,文件路径:{localFileName}"); }
}
catch (Exception e)
{
Console.WriteLine($"下载失败,原因:{e}"); }
}
}
}

参考

C#调用DLL库的方法

https://blog.csdn.net/guangod/article/details/85774225

https://github.com/sshnet/SSH.NET/

C#登录SSH执行命令,下载文件的更多相关文章

  1. [转]python3之paramiko模块(基于ssh连接进行远程登录服务器执行命令和上传下载文件的功能)

    转自:https://www.cnblogs.com/zhangxinqi/p/8372774.html 阅读目录 1.paramiko模块介绍 2.paramiko的使用方法 回到顶部 1.para ...

  2. ssh批量登录并执行命令(python实现)

    局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件 ...

  3. Python实现ssh批量登录并执行命令

    局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件 ...

  4. Linux远程ssh执行命令expect使用及几种方法

    expect命令实现脚本免交互 一.Linux下SSH无密码认证远程执行命令 在客户端使用ssh-keygen生成密钥对,然后把公钥复制到服务端(authorized_keys). 实现步骤: 1.客 ...

  5. ssh 执行命令并实时显示结果

    ssh 执行命令并实时显示结果 import paramiko def main(): sshClient = paramiko.SSHClient() sshClient.set_missing_h ...

  6. python批量操作Linux服务器脚本,ssh密码登录(执行命令、上传、下载)(一)

     -*-          paramiko.util.log_to_file(         ssh = paramiko.SSHClient()          ssh.set_missing ...

  7. Python3学习之路~9.1 paramiko模块:实现ssh执行命令以及传输文件

    我们一般使用linux的时候,都是在Windows上安装一个ssh客户端连接上去.那么从一台linux如何连接到另一条linux呢?使用ssh命令即可,因为每台linux机器自己都有一个ssh客户端. ...

  8. Windows VS2017 编译 libssh2 1.7.0(执行命令、文件上传、下载)

    下载安装 OpenSSL 要编译 libssh2,必须先编译好 OpenSSL 的静态库,直接从 http://slproweb.com/products/Win32OpenSSL.html 下载已经 ...

  9. python批量操作Linux服务器脚本,key登录(执行命令、上传、下载)(二)

       -*-   2 #批量操作linux服务器(执行命令,上传,下载)   3 #!/usr/bin/python   4 import paramiko   5 import datetime   ...

随机推荐

  1. mali tbr Forward Pixel Kill

    https://community.arm.com/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-00-20-66 ...

  2. HTML5 Web SQL 数据库

    呼和浩特seo:Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs. 如果你是一个 Web 后端程序员,应该 ...

  3. c++两种字符串赋值方式 并介绍 C语言下遍历目录文件的方式

    c++字符串声明:一种是声明字符数组并赋值,另一种是直接声明string类 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #incl ...

  4. unordered_map初用

    unordered_map,顾名思义,就是无序map,STL内部实现了Hash 所以使用时可以当做STL的Hash表使用,时间复杂度可做到O(1)查询 在C++11前,使用unordered_map要 ...

  5. [Angular 8] Lazy loading with dynamic loading syntax

    @NgModule({ declarations: [AppComponent, HomeComponent], imports: [ BrowserModule, MatSidenavModule, ...

  6. 线程(C++11)

    不同平台.框架.语言所使用的线程函数不同.对于初学者选择一种适合自己的,用熟用透即可. Windows中,CreateThread() Linux中,pthread_create() MFC框架中,A ...

  7. java后台防止XSS的脚本攻击

    import java.util.regex.Pattern; //具体过滤关键字符public class XSSUtil { private static Pattern[] patterns = ...

  8. HTML与CSS网页开发基础

    HTML标记语言 HTML文件的创建 整个编译器,或者记事本,文件扩展名改为.htm或者.html HTML文档结构 <html>标记:开头,所有HTML文件以<html>标记 ...

  9. P3478 [POI2008]STA-Station

    题目描述 The first stage of train system reform (that has been described in the problem Railways of the ...

  10. 使用Keras训练神经网络备忘录

    小书匠深度学习 文章太长,放个目录: 1.优化函数的选择 2.损失函数的选择 2.2常用的损失函数 2.2自定义函数 2.1实践 2.2将损失函数自定义为网络层 3.模型的保存 3.1同时保持结构和权 ...