目前希望使用 C 语言开发一个简单的 ssh 应用(可以登录到主机,发送指令,读到指令的输出)。
用法:sshtest IP PORT USERNAME PASSWORD COMMAND
输出:登录到主机并且执行 COMMAND 后的输出。
目前看到有以下库
libssh:可以实现服务端 /客户端,支持 V1/V2 协议
libssh2:仅实现客户端。
问题:
已经用 libssh2 实现了,但是在某些主机上(一台华三的交换机)上无法获取到输出,执行过程中无报错,但 libssh2_channel_read()一直返回的是 0 (但前面已经设置为阻塞模式了,按说不应该返回 0 ),有大佬知道吗?
搜索目前好像用 libssh2 的多一些,为什么?或者那个好?
![]() | 1 zunceng 2020-10-20 16:27:54 +08:00 ![]() 楼主的问题我也不知道 用 golang 挺简单的 我前前后后写过好几个 ssh tunnel proxy 类型的 |
2 Chenamy2017 OP @zunceng 感谢,或许我需要变一下思路,考虑下其他语言的。 |
![]() | 3 ETiV 2020-10-20 16:41:22 +08:00 via iPhone ![]() 为啥要自己开发,ssh 就可以这么用啊…… ssh user@hostname COMMAND |
5 wslzy007 2020-10-20 16:49:45 +08:00 ![]() 唉,c 开发,为啥要用 ssh 库呢?直接 openssl 它不香吗 |
![]() | 6 huangmingyou 2020-10-20 17:15:08 +08:00 ![]() ssh 还可以签名证书,限制执行的命令。 |
![]() | 7 xcstream 2020-10-20 21:43:16 +08:00 ![]() ssh 命令就可以这功能 |
8 Chenamy2017 OP ssh 是个好办法,但有一些缺陷: 1.要是根据反馈再执行相应的命令,那么每次执行要有一个验证过程,影响效率。 2.对于一些设备,命令执行结果很多需要输入回车才会继续显示。 我再研究一下,避免自己开发,使用 ssh 。谢谢大家! |
![]() | 9 ETiV 2020-10-21 11:22:47 +08:00 via iPhone 不知道你要干啥 自动化? ansible -m shell 了解一下? 它还有各种其它模块 |
10 Chenamy2017 OP @ETiV 是的,自动化。自动登录设备,自动执行一些命令。 ansible 这个看着好强大,目前我用 expect 测试,可以实现交互。 |