使用libssh2

时间:2019-11-09 00:09:32

标签: ssh libssh2

我正在寻找一种顺序执行多个命令的方法。我现在要做的是为每个命令创建一个喵声通道并关闭它。如果仅使用一个通道,则会收到一个错误,指出无法重用一个通道。但是我不确定这是否正确,因为为每个命令打开一个通道听起来很昂贵。

我要做的是建立与OpenWrt设备的ssh连接,该设备包含一个名为uci的可执行文件,该可执行文件可以修改设备上的配置文件并像这样使用它:

uci set network.lan.ipaddr='192.168.1.2'
uci set network.lan.dns='192.168.1.1'

我的代码与此类似:

let tcp = TcpStream::connect("127.0.0.1:22").unwrap();
let mut sess = Session::new().unwrap();
sess.set_tcp_stream(tcp);
sess.handshake().unwrap();
sess.userauth_agent("username").unwrap();

let mut channel = sess.channel_session().unwrap();
channel.exec("ls").unwrap();
channel.wait_close();
println!("#1 exit: {}", channel.exit_status().unwrap());

let mut channel = sess.channel_session().unwrap();
channel.exec("ls").unwrap();
channel.wait_close();
println!("#2 exit: {}", channel.exit_status().unwrap());

如果我不关闭通道并依次执行2条命令,则会得到错误代码-39(用法错误)。

0 个答案:

没有答案