sftp学习

什么是sftp?

sftp的简单操作

  • 远程连接
int RobostSftp::Init(QString ip,QString port,QString user_name, QString user_password)
{   int rc;session = ssh_new();if (!session) {fprintf(stderr, "ssh initialization failed\n");//        return 1;}/* Set session options */ip_=ip;port_=port;user_name_=user_name;user_password_=user_password;ssh_options_set(session, SSH_OPTIONS_PORT_STR, port.toStdString().c_str());ssh_options_set(session, SSH_OPTIONS_HOST, ip.toStdString().c_str());ssh_options_set(session, SSH_OPTIONS_USER, user_name.toStdString().c_str());rc = ssh_connect(session);if (rc != SSH_OK) {dialog->setLogTagText("警告");dialog->setLogText("没有连接到"+ip+"主机!!!");dialog->exec();fprintf(stderr, "ssh connection failed (%d)\n", rc);return 1;}/* Authenticate with password */rc = ssh_userauth_password(session, NULL, user_password.toStdString().c_str());if (rc != SSH_AUTH_SUCCESS) {dialog->setLogTagText("警告");dialog->setLogText("SFTP远程连接密码错误!!!");dialog->exec();//     fprintf(stderr, "ssh authentication failed (%d)\n", rc);return 1;}/* Initialize SFTP session */sftp = sftp_new(session);if (!sftp) {dialog->setLogTagText("警告");dialog->setLogText("SFTP初始化失败!!!");dialog->exec();
//        fprintf(stderr, "sftp initialization failed\n");return 1;}/* Initialize SFTP subsystem */rc = sftp_init(sftp);if (rc != SSH_OK) {dialog->setLogTagText("警告");dialog->setLogText("SFTP初始化失败!!!");dialog->exec();//          fprintf(stderr, "sftp initialization failed (%d)\n", rc);return 1;}fileTransferThread->init(ip,port,user_name,user_password);fileTransferThread->start();return 0;
}

  • 通过本机删除远程主机文件
void RobostSftp::deleteDir(QString filepath)
{QString path="/opt/hura/dataset/map/053101/path";int rc=sftp_rmdir(sftp,path.toStdString().c_str());if(rc!=SSH_OK) qDebug() << "删除失败: " << sftp_get_error(sftp);else qDebug()<<"删除成功";recursiveDelete(sftp,path.toStdString().c_str());//通过建立的sftp会话去递归的删除远程文件夹
}void RobostSftp::recursiveDelete(sftp_session sftp, const char *path) {sftp_dir dir;sftp_attributes attributes;dir = sftp_opendir(sftp, path);if (!dir) {qDebug()<<"无法打开目录 " << path ;return;}while ((attributes = sftp_readdir(sftp, dir)) != NULL) {if (strcmp(attributes->name, ".") == 0 || strcmp(attributes->name, "..") == 0) {continue;}char *filepath;asprintf(&filepath, "%s/%s", path, attributes->name);if (attributes->type == SSH_FILEXFER_TYPE_DIRECTORY) {// 如果是子文件夹,递归删除recursiveDelete(sftp, filepath);} else {// 如果是文件,直接删除int rc = sftp_unlink(sftp, filepath);if (rc != SSH_OK) {qDebug()<<"无法删除文件 " << path ;} else {qDebug()<< "文件 " << filepath << " 删除成功"  ;}}free(filepath);}sftp_closedir(dir);// 删除空目录int rc = sftp_rmdir(sftp, path);if (rc != SSH_OK) {qDebug()<<"无法删除目录 " << path ;} else {qDebug()<<"删除成功 " << path ;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/175045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新版idea如何开启多台JVM虚拟机

1.看看自己的项目 2.可能开始的时候啥也没有&#xff0c;就点Run Configuration Type 3.再点击Edit Configurations... 4.点击号添加SpringBoot 5.主类选择一下&#xff0c;一般就一个&#xff0c;点他选了就行。 6.然后点击Modify Options 选择添加add VM Options 7.点击appl…

云服务器哪家便宜?亚马逊AWS等免费云服务器推荐

在这数字化的时代&#xff0c;云计算技术越来越广泛应用于各种场景&#xff0c;尤其是云服务器&#xff0c;作为一种全新的服务器架构正在逐渐取代传统的物理服务器&#xff0c;“云服务器哪家便宜”等用户相关问题也受到越来越多的关注。自从亚马逊最早推出了首个云计算服务—…

如何解决主从数据库同步延迟问题?

如何解决主从数据库同步延迟问题&#xff1f; 前言 最近&#xff0c;系统上频繁出现主从延迟的问题&#xff0c;因此针对主从架构、主从同步以及主从延迟问题进行了一次学习。 主从架构浅析 在了解主从延迟之前&#xff0c;我们有必要对主从架构有一些简单的认识。在如今的…

2023-11-26 LeetCode每日一题(统计子串中的唯一字符)

2023-11-26每日一题 一、题目编号 828. 统计子串中的唯一字符二、题目链接 点击跳转到题目位置 三、题目描述 我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符&#xff0c;并返回唯一字符的个数。 例如&#xff1a;s “LEETCODE” &#xff0c;则其…

深度学习及其基本原理

深度学习的 Ups and Downs概念区分神经网络的构成深度学习基本原理深度学习的普遍近似定理扩展&#xff1a;反卷积网络——可视化每一层提取的特征 深度学习的 Ups and Downs 1958&#xff1a;感知机&#xff08;线性模型&#xff09;1969&#xff1a;感知机有局限性1980s&…

SpringCloud-高级篇(五)

一&#xff1a;分布式事务理论基础 原子性&#xff08;Atomicity&#xff09; 原子性是指事务是一个不可分割的工作单位&#xff0c;事务中的操作要么都发生&#xff0c;要么都不发生。 一致性&#xff08;Consistency&#xff09; 事务前后数据的完整性必须保持一致。 隔离性&…

【九章斩题录】Leetcode:面试题 01.03. URL化(C/C++)

精品题解 &#x1f525; 《九章斩题录》 &#x1f448; 猛戳订阅 面试题 01.03. URL化 &#x1f4da; 题目&#xff1a;URL化。编写一种方法&#xff0c;将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符&#xff0c;并且知道字符串的“真实”长度。…

【JDK21】详解虚拟线程

目录 1.概述 2.虚拟线程是为了解决哪些问题 2.1.线程切换的巨大代价 2.2.哪些情况会造成线程的切换 2.3.线程资源是有限的 3.虚拟线程 4.适用场景 1.概述 你发任你发&#xff0c;我用JAVA8&#xff1f;JDK21可能要对这句话say no了。 现在Oracle JDK是每4个版本&#x…

最新版小权云黑系统 骗子添加查询源码

小权云黑系统添加骗子&#xff0c;查询骗子&#xff0c;可添加团队后台方便审核用&#xff0c;在线反馈留言系统&#xff0c;前台提交骗子&#xff0c;后台需要审核才能过&#xff0c;后台使用光年UI界面&#xff0c;新增导航列表&#xff0c;可给网站添加导航友链&#xff0c;…

qt国际化多语言

vs + qt 方法 一 (1)生成.pro文件 如果报错: cannot find any qt projects to export 则执行如下: 然后重新生成 pro文件。 (2)生成ts文件 (方法1)在项目文件(xxx.pro) 文件添加: TRANSLATIONS += en.ts zh_CN.ts 然后打开cmd命令,进入项目目录,执行 l…

vue使用slot封装navBar

vue使用slot封装navBar 1、创建navBar.vue文件 <template><div><div class"headerBar"><div><div v-if"showLeft" class"left"><div v-if"leftText">{{ leftText }}</div><slot name&…

Spring中的循环依赖问题

目录 1、什么是Spring的循环依赖&#xff1f; 2、如何避免循环依赖问题&#xff1f; 3、Spring的三级缓存 小结 1、什么是Spring的循环依赖&#xff1f; Spring框架中的循环依赖问题是指两个或多个bean之间相互依赖&#xff0c;形成闭环&#xff0c;导致无法完成实例化的问…

【力扣】907.子数组的最小值之和

【力扣】907.子数组的最小值之和 文章目录 【力扣】907.子数组的最小值之和1. 题目介绍2. 解法2.1 方法一&#xff1a;单调栈2.2 方法二&#xff1a;动态规划 3. Danger参考 1. 题目介绍 给定一个整数数组 arr&#xff0c;找到 min(b) 的总和&#xff0c;其中 b 的范围为 arr …

ubuntu虚拟机设置跳不出来

前几天在使用ubuntu虚拟机的时候不知道哪一步出错了&#xff0c;导致右上角的设置按钮失效了&#xff0c;怎么点设置界面都出不来。 上网查阅后&#xff0c;有人说是显示器的原因&#xff0c;但是我点设置再点左上角activity并没有显示有设置窗口。 最后找到了解决办法&#xf…

【刷题笔记】分糖果||数组||暴力通过||符合思维方式||多案例分析

分发糖果 文章目录 分发糖果1 题目描述2 题目分析2.1 寻找波峰波谷2.2 从波底往波峰攀爬&#xff01;2.2 计算糖果 3 代码附录1 1 题目描述 https://leetcode.cn/problems/candy/ n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&…

Unity性能优化技巧篇

资源导入优化 随着项目越来越大&#xff0c;资源越来越多&#xff0c;有一套资源导入自动化设置很有必要&#xff0c;它不但可以减少你的工作量&#xff0c;也能更好的统一管理资源&#xff0c;保证资源的导入设置最优&#xff0c;还不会出错。 AssetPostprocessor 在Unity中…

python面向对象的特点:深入理解Python面向对象的关键特征

Python是一门支持面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;的高级编程语言。它具有许多强大的面向对象特性&#xff0c;其中包括&#xff1a; 封装继承多态 本文将结合具体实例来介绍这些特性。 1. 封装 封装是面向对象编程中的一个重…

Mo0n(月亮) MCGS触摸屏在野0day利用,强制卡死锁屏

项目:https://github.com/MartinxMax/Mo0n 后面还会不会在,我可就不知道了奥…还不收藏点赞关注 扫描存在漏洞的设备 #python3 Mo0n.py -scan 192.168.0.0/24 入侵锁屏 #python3 Mo0n.py -rhost 192.168.0.102 -lock 解锁 #python3 Mo0n.py -rhost 192.168.0.102 -unlock …

【Spring Boot】Swagger的常用注解

在Swagger的开发过程中&#xff0c;我们需要在Controller代码等处添加相应的注解&#xff0c;以便可以提高生成的接口文档的可读性为了解决这些问题&#xff0c;Swagger提供了很多的注解&#xff0c;通过这些注解&#xff0c;我们可以更好更清晰的描述我们的接口&#xff0c;包…

相机内存卡照片删除怎么恢复?没有备份可这样操作

在使用相机时&#xff0c;不小心删除了重要的照片可能是每位摄影爱好者的噩梦。然而&#xff0c;通过一些恢复方法&#xff0c;我们有机会挽救被删除的照片。本文将详细介绍相机内存卡照片删除恢复的方法。 图片来源于网络&#xff0c;如有侵权请告知 如果您误删了相机内存卡中…