YStudio Y++

SSH类

Y++ / YStudio 开发文档 · 一点滴

类对象支持库。路径:支持库 → 扩展类库 → SSH类。

旁路插件:plugins/supportlib.ssh/,随 IDE 免费,无需开通票位。运行时静态链接 libssh2 + WinCNG,用户程序无需额外 OpenSSL/libssh2 DLL。

类型名必须写完整「SSH类」。声明时自动创建。

硬约束

  1. 类型名必须写「SSH类」。
  2. 连接可用 登录 / 登录私钥;或先 置用户 / 置密码 / 置私钥 再 连接。
  3. 主机密钥:默认接受任意;可 置主机密钥策略(1) + 置期望指纹,或策略 2 + 置已知主机文件。
  4. 相对路径相对「工作目录」(默认 /);用 进入目录 / 返回上级 浏览。
  5. 方法调用必须带括号。

快速开始

SSH类 s
如果 (s.登录("192.168.1.10", "root", "secret", 22)) {
    输出(s.取主机指纹())
    s.执行("uname -a")
    输出(s.取标准输出())
    s.进入目录("/tmp")
    s.写文件("hi.txt", "hello")
    s.改权限("hi.txt", 644)
    s.远程复制("hi.txt", "hi.bak")
    s.断开()
} 否则 {
    输出(s.取错误())
}

进度回调:

函数 上传进度(整数 已传, 整数 总计) {
    输出(到文本(已传) + "/" + 到文本(总计))
}
SSH类 s
s.置进度(&上传进度)
s.登录("host", "user", "pass", 22)
s.上传("C:\big.bin", "/tmp/big.bin")

交互终端与端口转发:

s.打开终端()
s.终端发送("ls -la\n")
输出(s.终端接收(500))
s.关闭终端()

s.开始转发(13306, "127.0.0.1", 3306)  // 本机 13306 → 远端 3306
// … 用完
s.停止转发()

SSH类 方法(摘要)

连接:置用户 · 置密码 · 置私钥 · 置超时 · 置主机密钥策略 · 置期望指纹 · 置已知主机文件 · 取主机指纹 · 连接 · 登录 · 登录私钥 · 是否已连接 · 断开

命令:执行 · 执行成功 · 取退出码 · 取标准输出 · 取标准错误

目录:置工作目录 · 取工作目录 · 进入目录 · 返回上级 · 列目录 · 取条目数 · 取条目名 · 取条目类型 · 取条目大小

文件:上传 · 下载 · 上传目录 · 下载目录 · 置进度 · 读文件 · 写文件 · 追加文件 · 读字节集 · 写字节集 · 远程复制 · 是否存在 · 是否目录 · 取文件大小 · 删除 · 创建目录 · 重命名 · 取真实路径 · 改权限

终端:打开终端 · 终端已打开 · 关闭终端 · 终端发送 · 终端接收 · 终端可读字节

转发:开始转发 · 转发运行中 · 停止转发

其它:取错误

能力 说明
主机密钥 0 任意 / 1 指纹 / 2 known_hosts
置进度 上传/下载/远程复制同步回调
改权限 直接写 644/755/600(chmod 习惯);也兼容位掩码 420(=0644)、493(=0755)
打开终端 PTY 交互 shell,与「执行」独立
开始转发 独立 SSH 会话后台线程,不阻塞主会话

相关

TCP类 · HTTP类