mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
reboot: Fix typo and support bare Linux systems (#45607)
* reboot: Fix typo and support bare Linux systems This fixes a problem for bare Linux systems that do not support 'who -b' or 'uptime -s'. * Accumulate stdout and stderr information
This commit is contained in:
parent
21ff9c6a4a
commit
a7a99c5fd4
1 changed files with 14 additions and 1 deletions
|
@ -94,6 +94,8 @@ class ActionModule(ActionBase):
|
||||||
return reboot_command
|
return reboot_command
|
||||||
|
|
||||||
def get_system_boot_time(self):
|
def get_system_boot_time(self):
|
||||||
|
stdout = ''
|
||||||
|
stderr = ''
|
||||||
command_result = self._low_level_execute_command(self.DEFAULT_BOOT_TIME_COMMAND, sudoable=self.DEFAULT_SUDOABLE)
|
command_result = self._low_level_execute_command(self.DEFAULT_BOOT_TIME_COMMAND, sudoable=self.DEFAULT_SUDOABLE)
|
||||||
|
|
||||||
# For single board computers, e.g., Raspberry Pi, that lack a real time clock and are using fake-hwclock
|
# For single board computers, e.g., Raspberry Pi, that lack a real time clock and are using fake-hwclock
|
||||||
|
@ -101,11 +103,22 @@ class ActionModule(ActionBase):
|
||||||
# Fall back to using uptime -s for those systems.
|
# Fall back to using uptime -s for those systems.
|
||||||
# https://github.com/systemd/systemd/issues/6057
|
# https://github.com/systemd/systemd/issues/6057
|
||||||
if '1970-01-01 00:00' in command_result['stdout']:
|
if '1970-01-01 00:00' in command_result['stdout']:
|
||||||
|
stdout += command_result['stdout']
|
||||||
|
stderr += command_result['stderr']
|
||||||
command_result = self._low_level_execute_command('uptime -s', sudoable=self.DEFAULT_SUDOABLE)
|
command_result = self._low_level_execute_command('uptime -s', sudoable=self.DEFAULT_SUDOABLE)
|
||||||
|
|
||||||
|
# This is a last resort for bare Linux systems (e.g. OpenELEC) where 'who -b' or 'uptime -s' are not supported.
|
||||||
|
# Other options like parsing /proc/uptime or default uptime output are less reliable than this
|
||||||
if command_result['rc'] != 0:
|
if command_result['rc'] != 0:
|
||||||
|
stdout += command_result['stdout']
|
||||||
|
stderr += command_result['stderr']
|
||||||
|
command_result = self._low_level_execute_command('cat /proc/sys/kernel/random/boot_id', sudoable=self.DEFAULT_SUDOABLE)
|
||||||
|
|
||||||
|
if command_result['rc'] != 0:
|
||||||
|
stdout += command_result['stdout']
|
||||||
|
stderr += command_result['stderr']
|
||||||
raise AnsibleError("%s: failed to get host boot time info, rc: %d, stdout: %s, stderr: %s"
|
raise AnsibleError("%s: failed to get host boot time info, rc: %d, stdout: %s, stderr: %s"
|
||||||
% (self._task.action, command_result.rc, to_native(command_result['stdout']), to_native(command_result['stderr'])))
|
% (self._task.action, command_result['rc'], to_native(stdout), to_native(stderr)))
|
||||||
|
|
||||||
return command_result['stdout'].strip()
|
return command_result['stdout'].strip()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue