1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 """
21 Abstraction for libssh2 L{Channel} object
22 """
23
25 """
26 Exception raised when L{Channel} actions fails.
27 """
28 pass
29
31 """
32 Channel object
33 """
35 """
36 Creates a new channel object with the given _channel.
37
38 @param _channel: low level channel object
39 @type _channel: L{_libssh2.Channel}
40 """
41 self._channel = _channel
42 self.closed = False
43 self.flushed = False
44
46 """
47 Closes the active channel.
48
49 @return: 0 on success or negative on failure
50 @rtype: int
51 """
52 self.closed = True
53 return self._channel.close()
54
56 """
57 Checks if the remote host has sent a EOF status.
58
59 @return: 1 if the remote host has sent EOF otherwise 0
60 @rtype: int
61 """
62 return self._channel.eof()
63
65 """
66 Executes command on the channel.
67
68 @param command: message data
69 @type command: str
70
71 @return: 0 on success or negative on failure
72 @rtype: int
73 """
74 self.closed = True
75 return self._channel.execute(command)
76
78 """
79 Gets the exit code raised by the process running on the remote host.
80
81 @return: the exit status reported by remote host or 0 on failure
82 @rtype: int
83 """
84 return self._channel.exit_status()
85
87 """
88 Flushs the read buffer on the channel.
89
90 @return: 0 on sucess or negative on failure
91 @rtype: int
92 """
93 self.flushed = True
94 return self._channel.flush()
95
96 - def poll(self, timeout, nfds):
97 """
98 Polls for activity on the channel.
99
100 @param timeout: remaining timeout
101 @type timeout: int
102 @param nfds: number of fds to poll
103 @type nfds: int
104
105 @return: number of fds with interesting events or negative on failure
106 @rtype: int
107 """
108 return self._channel.poll(timeout, nfds)
109
111 """
112 Checks if data is available on the channel.
113
114 @param extended: if message channel datas is extended
115 @type extended: int
116
117 @return: 1 when data is available or 0 otherwise
118 @rtype: int
119 """
120 return self._channel.poll_read(extended)
121
122 - def pty(self, term="vt100"):
123 """
124 Requests a pty with term type on the channel.
125
126 @param term: terminal emulation type (vt100, ansi, etc...)
127 @type term: str
128
129 @return: 0 on success or negative on failure
130 @rtype: int
131 """
132 return self._channel.pty(term)
133
135 """
136 Requests a pty resize of the channel with given width and height.
137
138 @param width: terminal width
139 @type width: int
140 @param height: terminal height
141 @type height: int
142
143 @return: 0 on success or negative on failure
144 @rtype: int
145 """
146 return self._channel.pty_resize(width, height)
147
148 - def read(self, size=4096):
149 """
150 Reads size bytes on the channel.
151
152 @param size: size of the buffer storage
153 @type size: int
154
155 @return: bytes readed or negative on failure
156 @rtype: str
157 """
158 return self._channel.read(size)
159
161 """
162 Sends EOF status on the channel to remote server.
163
164 @return: 0 on success or negative on failure
165 @rtype: int
166 """
167 self._channel.send_eof()
168
170 """
171 Sets blocking mode on the channel. Default mode is blocking.
172
173 @param mode: blocking (1) or non blocking (0) mode
174 @rtype: int
175 """
176 return self._channel.setblocking(mode)
177
178 - def setenv(self, name, value):
179 """
180 Sets envrionment variable on the channel.
181
182 @param name: envrionment variable name
183 @type name: str
184 @param value: envrionment variable value
185 @type value: str
186
187 @return: 0 on success or negative on failure
188 @rtype: int
189 """
190 return self._channel.setenv(name, value)
191
193 """
194 Requests a shell on the channel.
195
196 @return: 0 on success or negative on failure
197 @rtype: int
198 """
199 return self._channel.shell()
200
201 - def window_read(self, read_avail, window_size_initial):
202 """
203 Checks the status of the read window on the channel.
204
205 @param read_avail: window limit to read
206 @type read_avail: int
207 @param window_size_initial: window initial size defined
208 @type window_size_initial: int
209
210 @return: the number of bytes which the remote end may send
211 without overflowing the window limit
212 @rtype: int
213 """
214 return self._channel.window_read(read_avail, window_size_initial)
215
216 - def write(self, message):
217 """
218 Writes data on the channel.
219
220 @param message: data to write
221 @type message: str
222
223 @return: 0 on sucess or failure
224 @rtype: int
225 """
226 return self._channel.write(message)
227
229 """
230 Requests a X11 Forwarding on the channel.
231
232 @param display: screen number
233 @param display: int
234
235 @return: 0 on success or negative on failure
236 @rtype: int
237 """
238 return self._channel.x11_req(display)
239