开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 7223|回复: 7
收起左侧

[易语言] 寻人帮看一下这个源码包,SSH2源码,登录和执行命令都在一起,请把执行命令代码分离出来

[复制链接]
结帖率:77% (20/26)
发表于 2017-2-23 16:57:38 | 显示全部楼层 |阅读模式   河南省郑州市
50精币
2017-02-23_165250.jpg

我这里有一个易语言登录SSH2的源码,登录正常,也能执行shell命令和取回返回结果,
唯一的缺点就是,登录和执行shell命令都在一个子程序内,
每次执行命令都要登录一次,我看不懂源码,又分离不出来.
请高手帮阅读一下源码,
把执行shell命令的部分给分离出来,就是不要每次执行命令都登录一次.


源码在这:


易语言调用SSH2演示源码.zip (614.79 KB, 下载次数: 575)


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:77% (20/26)
 楼主| 发表于 2017-2-23 17:03:27 | 显示全部楼层   河南省郑州市
  
子程序名返回值类型公开备 注
_按钮_登录测试_被单击  
变量名类 型静态数组备 注
wsaDataWSADATA 
version整数型 
ret整数型 
hostname文本型 
commandline文本型 
username文本型 
password文本型 
nh整数型 
rc整数型 
hostaddr整数型 
m_addrsockaddr_in 
sock整数型 
session整数型 
fingerprint文本型 
len整数型 
type整数型 
channel整数型 
start逻辑型 
buffer文本型 
version = 合并整数 (2, 0)
ret = WSAStartup (version, wsaData)
' 本源码来自易语言资源网(www.5A5X.com)
hostname = “192.168.10.115”  ' ip
commandline = 编辑框1.内容
username = “root”  ' 用户名
password = “xxxxx”  ' 密码
rc = libssh2_init (0)
输出调试文本 (rc)
hostaddr = inet_addr (hostname)
sock = socket ( #AF_INET, #SOCK_STREAM, 0)
m_addr.sin_family = #AF_INET
m_addr.sin_addr = hostaddr
m_addr.sin_port = htons (22)  ' 改变端口号的数据格式
ret = connect (sock, m_addr, 16)
如果真 (ret = #SOCKET_ERROR )
输出调试文本 (“connect error”)
session = libssh2_session_init_ex (0, 0, 0, 0)
如果真 (session = 0)
输出调试文本 (“session init error”)
返回 ()  ' 本源码来自易语言资源网(www.5A5X.com)
libssh2_session_set_blocking (session, 0)
rc = libssh2_session_handshake (session, sock)
判断循环首 (rc = -37)
rc = libssh2_session_handshake (session, sock)
判断循环尾 ()
. ' 如果 (rc ≠ 0)
' nh = libssh2_knownhost_init (session)

. ' 如果 (nh = 0)
' libssh2_knownhost_readfile (nh, “known_hosts”, #LIBSSH2_KNOWNHOST_FILE_OPENSSH)
' libssh2_knownhost_writefile (nh, “dumpfile”, #LIBSSH2_KNOWNHOST_FILE_OPENSSH)
' fingerprint = libssh2_session_hostkey (session, len, type)
' libssh2_knownhost_free (nh)
如果真 (取文本长度 (password) ≠ 0)
rc = libssh2_userauth_password (session, username, password)
判断循环首 (rc = #LIBSSH2_ERROR_EAGAIN )
rc = libssh2_userauth_password (session, username, password)
判断循环尾 ()
如果真 (rc ≠ 0)
输出调试文本 (“Authentication by password failed.”)

' libssh2_trace (session, 位取反 (0))
channel = libssh2_channel_open_session (session)
rc = libssh2_session_last_error (session, “”, 0, 0)
判断循环首 (channel = 0 rc = #LIBSSH2_ERROR_EAGAIN )
channel = libssh2_channel_open_session (session)
rc = libssh2_session_last_error (session, “”, 0, 0)
判断循环尾 ()
如果真 (channel = 0)
输出调试文本 (“Channel Open Session Error”)

rc = libssh2_channel_exec (channel, commandline)
判断循环首 (rc = #LIBSSH2_ERROR_EAGAIN )
rc = libssh2_channel_exec (channel, commandline)
判断循环尾 ()
如果真 (rc ≠ 0)
输出调试文本 (“Channel Exec Error”)
start = 真
判断循环首 (start)
buffer = 取空白文本 (16384)
rc = libssh2_channel_read (channel, buffer, 取文本长度 (buffer))
如果 (rc > 0)
' 写到文件 (“C:\Users\XzErO\Desktop\新建文件夹 (2)\迅雷水晶檢測\ssh\1.bin”, 到字节集 (buffer))
编辑框2.加入文本 (子文本替换 (取文本左边 (buffer, rc), 字符 (10), 字符 (13)字符 (10), , , )#换行符 )
跳出循环 ()
如果 (rc = #LIBSSH2_ERROR_EAGAIN )

跳出循环 ()


判断循环尾 ()
libssh2_channel_free (channel)
libssh2_session_disconnect (session, “Normal Shutdown, Thank you for playing”)
libssh2_session_free (session)
closesocket (sock)
libssh2_exit ()

回复

使用道具 举报

结帖率:77% (20/26)
 楼主| 发表于 2017-2-24 11:33:18 | 显示全部楼层   河南省郑州市
求帮助啊飒飒阿萨
回复

使用道具 举报

发表于 2018-4-4 18:05:50 | 显示全部楼层   上海市上海市
我写的类模块,已分离出执行.模块下载:htt删p://dow删n.51cto.com/data删/2444889
帖子地址:http://bbs.eyuyan.com/read.php?tid=406552  可以参考一下调用过程

补充内容 (2018-4-4 18:09):
如果有帮助的话,请发个红包支付宝:sanwenjing@163.com
回复

使用道具 举报

结帖率:0% (0/1)
发表于 2018-8-5 19:36:03 | 显示全部楼层   浙江省*
为什么我的老是提示    无法找到指定DLL库文件“libssh2.dll”中的输出命令“libssh2_init”
回复

使用道具 举报

结帖率:100% (31/31)

签到天数: 4 天

发表于 2018-11-9 07:07:12 | 显示全部楼层   广东省广州市
易王 发表于 2017-2-23 17:03
[e=2].版本 2

.子程序 _按钮_登录测试_被单击

表示完全看不懂啊
回复

使用道具 举报

发表于 2021-3-10 11:11:43 | 显示全部楼层   湖南省衡阳市
求帮助啊飒飒阿萨
回复

使用道具 举报

结帖率:0% (0/1)
发表于 2022-9-7 12:27:10 | 显示全部楼层   山东省青岛市
6666666666666666666
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表