目前希望使用 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 1
楼主的问题我也不知道
用 golang 挺简单的 我前前后后写过好几个 ssh tunnel proxy 类型的 |
2
Chenamy2017 OP @zunceng 感谢,或许我需要变一下思路,考虑下其他语言的。
|
3
ETiV 2020-10-20 16:41:22 +08:00 via iPhone 1
为啥要自己开发,ssh 就可以这么用啊……
ssh user@hostname COMMAND |
5
wslzy007 2020-10-20 16:49:45 +08:00 1
唉,c 开发,为啥要用 ssh 库呢?直接 openssl 它不香吗
|
6
huangmingyou 2020-10-20 17:15:08 +08:00 1
ssh 还可以签名证书,限制执行的命令。
|
7
xcstream 2020-10-20 21:43:16 +08:00 1
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 测试,可以实现交互。 |