Server IP : 85.214.239.14 / Your IP : 18.117.91.116 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/self/root/proc/2/root/proc/3/cwd/usr/lib/python3/dist-packages/ansible/modules/ |
Upload File : |
# -*- coding: utf-8 -*- # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com> # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) from __future__ import absolute_import, division, print_function __metaclass__ = type DOCUMENTATION = r''' --- module: slurp version_added: historical short_description: Slurps a file from remote nodes description: - This module works like M(ansible.builtin.fetch). It is used for fetching a base64- encoded blob containing the data in a remote file. - This module is also supported for Windows targets. options: src: description: - The file on the remote system to fetch. This I(must) be a file, not a directory. type: path required: true aliases: [ path ] extends_documentation_fragment: - action_common_attributes attributes: check_mode: support: full diff_mode: support: none platform: platforms: posix, windows notes: - This module returns an 'in memory' base64 encoded version of the file, take into account that this will require at least twice the RAM as the original file size. seealso: - module: ansible.builtin.fetch author: - Ansible Core Team - Michael DeHaan (@mpdehaan) ''' EXAMPLES = r''' - name: Find out what the remote machine's mounts are ansible.builtin.slurp: src: /proc/mounts register: mounts - name: Print returned information ansible.builtin.debug: msg: "{{ mounts['content'] | b64decode }}" # From the commandline, find the pid of the remote machine's sshd # $ ansible host -m ansible.builtin.slurp -a 'src=/var/run/sshd.pid' # host | SUCCESS => { # "changed": false, # "content": "MjE3OQo=", # "encoding": "base64", # "source": "/var/run/sshd.pid" # } # $ echo MjE3OQo= | base64 -d # 2179 ''' RETURN = r''' content: description: Encoded file content returned: success type: str sample: "MjE3OQo=" encoding: description: Type of encoding used for file returned: success type: str sample: "base64" source: description: Actual path of file slurped returned: success type: str sample: "/var/run/sshd.pid" ''' import base64 import errno import os from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.common.text.converters import to_native def main(): module = AnsibleModule( argument_spec=dict( src=dict(type='path', required=True, aliases=['path']), ), supports_check_mode=True, ) source = module.params['src'] try: with open(source, 'rb') as source_fh: source_content = source_fh.read() except (IOError, OSError) as e: if e.errno == errno.ENOENT: msg = "file not found: %s" % source elif e.errno == errno.EACCES: msg = "file is not readable: %s" % source elif e.errno == errno.EISDIR: msg = "source is a directory and must be a file: %s" % source else: msg = "unable to slurp file: %s" % to_native(e, errors='surrogate_then_replace') module.fail_json(msg) data = base64.b64encode(source_content) module.exit_json(content=data, source=source, encoding='base64') if __name__ == '__main__': main()