chilkat library remote control shell(Python/SSH)

chilkat library remote control shell(Python/SSH)
1----import sys && import childkat

2----Object Creation obj = childkat.CkSsh()

3----Any string automatically a fully-functional 30-day trial

ssh.UnlockComponent("30-day trial")   return boolean

4----Connect to an SSH server hostname = "....." port = 22

ssh.Connect(hostname,port) return boolean

5----Wait a max of 5 seconds when reading responeses

ssh.put_IdleTimeoutMs(5000)

6----Authenticate using login/password

ssh.AuthenticatePw("username","password")

7----Open a session channel(It is possible to have mulitiple session channels open simulatneously)

channelNum = ssh.OpenSessionChannel()

8----Some SSH servers require a pseudo-terminal.

#  If so, include the call to SendReqPty.  If not, then

#  comment out the call to SendReqPty.

#  Note: The 2nd argument of SendReqPty is the terminal type,

#  which should be something like "xterm", "vt100", "dumb", etc.

#  A "dumb" terminal is one that cannot process escape sequences.

#  Smart terminals, such as "xterm", "vt100", etc. process

#  escape sequences.  If you select a type of smart terminal,

#  your application will receive these escape sequences

#  included in the command's output.  Use "dumb" if you do not

#  want to receive escape sequences.  (Assuming your SSH

#  server recognizes "dumb" as a standard dumb terminal.)

termType = "dumb"

widthInChars = 120

heightInChars = 40

#  Use 0 for pixWidth and pixHeight when the dimensions

#  are set in number-of-chars.

pixWidth = 0

pixHeight = 0ssh.SendReqPty(channelNum,termType,widthInChars,heightInChars,pixWidth,pixHeight)

9----Start a shell on the channel

ssh.SendRequestShell(channelNum)

10----Start a command in the remote shellssh.ChannelSendString(channelNum,"cd"+"/t/var/tmp/n",charset)

11----Send an EOF. This tells the server that no more data will be sent on this channel.The channel remains open, and the SSH client may still receive output on this channel
ssh.ChannelSendEof(channelNum)

12----

#  Read whatever output may already be available on the

#  SSH connection.  ChannelReadAndPoll returns the number of bytes

#  that are available in the channel's internal buffer that#  are ready to be "picked up" by calling           GetReceivedText

#  or GetReceivedData.

#  A return value of -1 indicates failure.

#  A return value of -2 indicates a failure via timeout.

#  The ChannelReadAndPoll method waits

#  for data to arrive on the connection usingi the IdleTimeoutMs

#  property setting.  Once the first data arrives, it continues

#  reading but instead uses the pollTimeoutMs passed in the 2nd argument:

#  A return value of -2 indicates a timeout where no data is received.
pollTimeoutMs = 2000

n = ssh.ChannelReadAndPoll(channelNum,pollTimeoutMs)
13---- Close the channel:

ssh.ChannelSendClose(channelNum)
13----

#  Perhaps we did not receive all of the commands output.

#  To make sure,  call ChannelReceiveToClose to accumulate any remaining

#  output until the server's corresponding "channel close" is received.ssh.ChannelReceiveToClose(channelNum)
14----Let's pickup the accumulated output of the command:
cmdOutput = ssh.getReceivedText(channnelNum,charset)
15----Disconnect
ssh.Disconnect()
If an error occurs,the following method can be used:

print ssh.lastErrorText()

sys.exit()

***************************************************************************

PS:

第一次使用有不正确之处望指正~

其中关于最后的读取方法有很多种不同~

遇到的问题:

怎样在channel没用被close之前,就可以返回screen中的result?!并clear screen.换句话说,就是怎样获得shell command执行的结果集,并清屏~

这个库我不太清楚他的价值,只是随手拈来的~有好的python库值得研究的,谢谢共享~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值