Entering enable mode using JSch

  • 11 September 2023
  • 3 replies

Userlevel 7
Badge +18

Does anybody have any example code on how to enter enable mode when using JSch? I already have the script working for 95% of my devices, so i don’t want to have to switch to expect. The channel mode is currently exec, which i think is the issue. It’s trying to execute `enable\n${enable_pass}\n${cmd}` all at once and the device is choking on it. Would rather not have to switch to shell mode, but if there’s no way to do it without shell mode, i guess i’ll have to take a stab at it.


Best answer by Stuart Weenig 12 September 2023, 16:11

View original

3 replies

Userlevel 2
Badge +4

It does seem like shell mode would be your best bet.

That being said you could introduce a false sort of delay if you really wanted to use exec.

Maybe something like:

Session session = jsch.getSession(user, host, 22);
session.setConfig("StrictHostKeyChecking", "no");

// command1
ChannelExec channel1 = (ChannelExec) session.openChannel("exec");

Thread.sleep(1000); // Delay for 1 second

// command2
ChannelExec channel2 = (ChannelExec) session.openChannel("exec");


There could be issues depending on how certain devices response, or if connection session up/down takes an extended amount of time.

Using shell would be easier for sure, and more consistent across devices, but hope this helps!

Userlevel 7
Badge +18

Actually, since it’s such a small number of devices, we’re just going to deem those unsupported. We’ll either have the customer change that user’s permissions so it’s not required or not monitor it.

It would be nice to have a good example that works from LM (among so many other needed code examples). Has anyone at LM taken ownership of the monitoring-recipies repo?

It would actually be nice to have a built in collection method that would simplify building modules that use SSH.

Userlevel 7
Badge +18

Plus, if i’m going to switch to shell, i might as well switch to expect.