0
Paramikoは、それぞれの実行で異なる出力を与えています。時にはそれは、これを返します。Paramikoの出力に矛盾がありますか?
The programs included with the Debian GNU/Linux system are free software;
...
$
$ su -
Password:
そして、他の回、それがこれを返します。
The programs included with the Debian GNU/Linux system are free software;
...
$ $ su -
Password:
これは私のコードです:
def execute_shell_command(self, command, timeout=10, wait_for_answer=True):
if self.session is None:
message = "'{}' could not execute '{}', session is not open".format(self.interface_id, command)
self.sys_conf.logger.warning(message)
raise SessionIsNotAvailable(message)
channel = self.shell
channel.set_combine_stderr(True)
output_lines = []
try:
# Clear the buffer before executing any commands
while channel.recv_ready():
output_lines.append(channel.recv(99999).decode("utf-8", "ignore"))
# Execute command, wait {timeout} seconds and try to clear the buffer again.
channel.send('{}\n'.format(command))
time.sleep(timeout)
if wait_for_answer:
while channel.recv_ready():
output_lines.append(channel.recv(99999).decode("utf-8", "ignore"))
except socket.timeout as e:
message = "Timeout reached - failed to execute command '{}'".format(command)
self.sys_conf.logger.warning(message)
raise ExecutionTimeout(message, e)
answer = "".join(output_lines)
if wait_for_answer:
return answer
はちょうど私には奇妙に思える、どんな存在してはなりませんそれは同じサーバーに同じコマンドだからです。
フォローアップの質問:タイミングには何が影響しますか? –
@AlexOsheter:誰が知っている。それはあなたが発見したように非決定論的です。たぶん、ある特定の瞬間にマシンが多かれ少なかれ忙しいかもしれません。 –