I am writing a program in Python which must communicate through SSH with a physical target, and send to this targets some commands automatically (it is for testing).
I start by doing this with Paramiko and everything was perfect until I have to send several commands and when for example the second one must be execute in the context of the first (for example the first one makes cd /mytargetRep
and the second one is ./executeWhatIWant
). I can't use exec_command
to do so, because each exec_command
starts a new session.
I try to use a channel with invoke_shell()
, but I have an other problem with this one: I don't know when command execution is ended by doing this. I can have some very short (in time) command execution, and some other are really more longer so I need to know when the command execution is over.
I know a workaround it to use exec_command
with a shell logic operations such as &&
or using ;
. For example exec_command("cd /mytargetRep && ./executeWhatIWant")
. But I can't do that, because it must also be possible to execute some commands manually (I have a minimalist terminal where I can send commands), so for example, the user will make cd /mytargetRep
then ./executeWhatIWant
and not cd /mytargetRep && ./executeWhatIWant
.
So my question is: is there a solution by using Paramiko to send several commands in a same SSH session and be able to know the end of the command execution?
Thanks
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…