博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Rust SSH 操作 执行远程命令 上传下载文件
阅读量:4046 次
发布时间:2019-05-24

本文共 1460 字,大约阅读时间需要 4 分钟。

本文代码 https://github.com/tothis/rust-record/tree/main/ssh2

Cargo.toml

[package]name = "ssh2-record"version = "0.1.0"edition = "2018"[dependencies]ssh2 = "0.9"

src/main.rs

use std::fs;use std::io::{Read, Write};use std::net::TcpStream;use std::path::Path;use ssh2::Session;const FILE_PATH: &str = "Cargo.toml";fn main() {    let tcp = TcpStream::connect("192.168.1.128:22").unwrap();    let mut session = Session::new().unwrap();    session.set_tcp_stream(tcp);    session.handshake().unwrap();    session.userauth_password("root", "123456").unwrap();    session.authenticated();    let mut channel = session.channel_session().unwrap();    // 执行命令并打印输出    channel.exec("ls").unwrap();    let mut ls = String::new();    channel.read_to_string(&mut ls).unwrap();    println!("{}", ls);    channel.wait_close().unwrap();    // 上传文件    let result = fs::read(FILE_PATH).unwrap();    let mut remote_file = session.scp_send(Path::new(FILE_PATH)                                           , 0o644, result.len() as u64, None).unwrap();    remote_file.write(&result).unwrap();    // 下载文件    let (mut remote_file, _) = session.scp_recv(Path::new(FILE_PATH))        .unwrap();    let mut read = Vec::new();    remote_file.read_to_end(&mut read).unwrap();    println!("{:?}", String::from_utf8(read).unwrap());    // 关闭频道,等待全部内容传输完毕    remote_file.send_eof().unwrap();    remote_file.wait_eof().unwrap();    remote_file.close().unwrap();    remote_file.wait_close().unwrap();}

转载地址:http://yfwci.baihongyu.com/

你可能感兴趣的文章
浏览器端的缓存规则
查看>>
redis持久化RDB和AOF
查看>>
Redis持久化存储(AOF与RDB两种模式)
查看>>
memcached工作原理与优化建议
查看>>
Redis与Memcached的区别
查看>>
redis sharding方案
查看>>
程序员最核心的竞争力是什么?
查看>>
阿里、网易、滴滴共十次前端面试碰到的问题
查看>>
memcache、redis原理对比
查看>>
Node.js机制及原理理解初步
查看>>
linux CPU个数查看
查看>>
linux系统负载load average的含义
查看>>
分布式应用开发相关的面试题收集
查看>>
简单理解Socket及TCP/IP、Http、Socket的区别
查看>>
利用HTTP Cache来优化网站
查看>>
利用负载均衡优化和加速HTTP应用
查看>>
消息队列设计精要
查看>>
高可用性系统在大众点评的实践与经验
查看>>
美团酒店Node全栈开发实践
查看>>
分布式缓存负载均衡负载均衡的缓存处理:虚拟节点对一致性hash的改进
查看>>