specinfra-cisco 2.40.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +21 -0
- data/.gitmodules +3 -0
- data/.travis.yml +19 -0
- data/Gemfile +4 -0
- data/Guardfile +12 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +43 -0
- data/appveyor.yml +56 -0
- data/examples/multiple_backends.rb +46 -0
- data/lib/specinfra.rb +45 -0
- data/lib/specinfra/backend.rb +12 -0
- data/lib/specinfra/backend/base.rb +55 -0
- data/lib/specinfra/backend/cmd.rb +68 -0
- data/lib/specinfra/backend/docker.rb +112 -0
- data/lib/specinfra/backend/dockerfile.rb +32 -0
- data/lib/specinfra/backend/exec.rb +152 -0
- data/lib/specinfra/backend/lxc.rb +45 -0
- data/lib/specinfra/backend/powershell/command.rb +40 -0
- data/lib/specinfra/backend/powershell/script_helper.rb +86 -0
- data/lib/specinfra/backend/powershell/support/check_file_access_rules.ps1 +8 -0
- data/lib/specinfra/backend/powershell/support/crop_text.ps1 +11 -0
- data/lib/specinfra/backend/powershell/support/find_group.ps1 +8 -0
- data/lib/specinfra/backend/powershell/support/find_iis_component.ps1 +90 -0
- data/lib/specinfra/backend/powershell/support/find_installed_application.ps1 +37 -0
- data/lib/specinfra/backend/powershell/support/find_installed_hot_fix.ps1 +18 -0
- data/lib/specinfra/backend/powershell/support/find_scheduled_task.ps1 +7 -0
- data/lib/specinfra/backend/powershell/support/find_service.ps1 +5 -0
- data/lib/specinfra/backend/powershell/support/find_user.ps1 +8 -0
- data/lib/specinfra/backend/powershell/support/find_usergroup.ps1 +9 -0
- data/lib/specinfra/backend/powershell/support/is_port_listening.ps1 +14 -0
- data/lib/specinfra/backend/powershell/support/is_remote_port_listening.ps1 +51 -0
- data/lib/specinfra/backend/powershell/support/list_windows_features.ps1 +68 -0
- data/lib/specinfra/backend/shell_script.rb +29 -0
- data/lib/specinfra/backend/ssh.rb +182 -0
- data/lib/specinfra/backend/telnet.rb +111 -0
- data/lib/specinfra/backend/winrm.rb +29 -0
- data/lib/specinfra/command.rb +304 -0
- data/lib/specinfra/command/aix.rb +1 -0
- data/lib/specinfra/command/aix/base.rb +2 -0
- data/lib/specinfra/command/aix/base/file.rb +21 -0
- data/lib/specinfra/command/aix/base/group.rb +8 -0
- data/lib/specinfra/command/aix/base/host.rb +17 -0
- data/lib/specinfra/command/aix/base/inventory.rb +38 -0
- data/lib/specinfra/command/aix/base/package.rb +11 -0
- data/lib/specinfra/command/aix/base/port.rb +8 -0
- data/lib/specinfra/command/aix/base/service.rb +11 -0
- data/lib/specinfra/command/aix/base/user.rb +15 -0
- data/lib/specinfra/command/alpine.rb +1 -0
- data/lib/specinfra/command/alpine/base.rb +2 -0
- data/lib/specinfra/command/alpine/base/package.rb +19 -0
- data/lib/specinfra/command/alpine/base/process.rb +20 -0
- data/lib/specinfra/command/alpine/base/service.rb +11 -0
- data/lib/specinfra/command/amazon.rb +2 -0
- data/lib/specinfra/command/amazon/base.rb +2 -0
- data/lib/specinfra/command/arch.rb +1 -0
- data/lib/specinfra/command/arch/base.rb +11 -0
- data/lib/specinfra/command/arch/base/file.rb +14 -0
- data/lib/specinfra/command/arch/base/package.rb +30 -0
- data/lib/specinfra/command/arch/base/service.rb +5 -0
- data/lib/specinfra/command/base.rb +21 -0
- data/lib/specinfra/command/base/bond.rb +2 -0
- data/lib/specinfra/command/base/bridge.rb +2 -0
- data/lib/specinfra/command/base/cron.rb +17 -0
- data/lib/specinfra/command/base/file.rb +179 -0
- data/lib/specinfra/command/base/fstab.rb +2 -0
- data/lib/specinfra/command/base/group.rb +26 -0
- data/lib/specinfra/command/base/host.rb +25 -0
- data/lib/specinfra/command/base/interface.rb +2 -0
- data/lib/specinfra/command/base/inventory.rb +2 -0
- data/lib/specinfra/command/base/ip6tables.rb +2 -0
- data/lib/specinfra/command/base/ipfilter.rb +2 -0
- data/lib/specinfra/command/base/ipnat.rb +2 -0
- data/lib/specinfra/command/base/iptables.rb +2 -0
- data/lib/specinfra/command/base/kernel_module.rb +2 -0
- data/lib/specinfra/command/base/localhost.rb +7 -0
- data/lib/specinfra/command/base/lxc_container.rb +2 -0
- data/lib/specinfra/command/base/mail_alias.rb +12 -0
- data/lib/specinfra/command/base/package.rb +51 -0
- data/lib/specinfra/command/base/port.rb +10 -0
- data/lib/specinfra/command/base/ppa.rb +2 -0
- data/lib/specinfra/command/base/process.rb +15 -0
- data/lib/specinfra/command/base/routing_table.rb +9 -0
- data/lib/specinfra/command/base/selinux.rb +2 -0
- data/lib/specinfra/command/base/selinux_module.rb +2 -0
- data/lib/specinfra/command/base/service.rb +15 -0
- data/lib/specinfra/command/base/user.rb +94 -0
- data/lib/specinfra/command/base/yumrepo.rb +3 -0
- data/lib/specinfra/command/base/zfs.rb +1 -0
- data/lib/specinfra/command/coreos.rb +1 -0
- data/lib/specinfra/command/coreos/base.rb +2 -0
- data/lib/specinfra/command/coreos/base/service.rb +5 -0
- data/lib/specinfra/command/cumulus.rb +11 -0
- data/lib/specinfra/command/cumulus/base.rb +2 -0
- data/lib/specinfra/command/cumulus/base/ppa.rb +17 -0
- data/lib/specinfra/command/cumulus/base/service.rb +7 -0
- data/lib/specinfra/command/darwin.rb +1 -0
- data/lib/specinfra/command/darwin/base.rb +2 -0
- data/lib/specinfra/command/darwin/base/file.rb +47 -0
- data/lib/specinfra/command/darwin/base/host.rb +11 -0
- data/lib/specinfra/command/darwin/base/inventory.rb +28 -0
- data/lib/specinfra/command/darwin/base/package.rb +41 -0
- data/lib/specinfra/command/darwin/base/port.rb +8 -0
- data/lib/specinfra/command/darwin/base/service.rb +11 -0
- data/lib/specinfra/command/darwin/base/user.rb +15 -0
- data/lib/specinfra/command/debian.rb +1 -0
- data/lib/specinfra/command/debian/base.rb +11 -0
- data/lib/specinfra/command/debian/base/package.rb +33 -0
- data/lib/specinfra/command/debian/base/ppa.rb +2 -0
- data/lib/specinfra/command/debian/base/service.rb +32 -0
- data/lib/specinfra/command/debian/v8.rb +2 -0
- data/lib/specinfra/command/debian/v8/service.rb +5 -0
- data/lib/specinfra/command/esxi.rb +1 -0
- data/lib/specinfra/command/esxi/base.rb +2 -0
- data/lib/specinfra/command/esxi/base/package.rb +7 -0
- data/lib/specinfra/command/fedora.rb +1 -0
- data/lib/specinfra/command/fedora/base.rb +2 -0
- data/lib/specinfra/command/fedora/base/service.rb +11 -0
- data/lib/specinfra/command/fedora/v15.rb +2 -0
- data/lib/specinfra/command/fedora/v15/service.rb +5 -0
- data/lib/specinfra/command/freebsd.rb +1 -0
- data/lib/specinfra/command/freebsd/base.rb +3 -0
- data/lib/specinfra/command/freebsd/base/file.rb +42 -0
- data/lib/specinfra/command/freebsd/base/interface.rb +35 -0
- data/lib/specinfra/command/freebsd/base/inventory.rb +28 -0
- data/lib/specinfra/command/freebsd/base/package.rb +19 -0
- data/lib/specinfra/command/freebsd/base/port.rb +8 -0
- data/lib/specinfra/command/freebsd/base/routing_table.rb +9 -0
- data/lib/specinfra/command/freebsd/base/service.rb +11 -0
- data/lib/specinfra/command/freebsd/base/user.rb +20 -0
- data/lib/specinfra/command/freebsd/v10.rb +2 -0
- data/lib/specinfra/command/freebsd/v10/package.rb +31 -0
- data/lib/specinfra/command/freebsd/v6.rb +2 -0
- data/lib/specinfra/command/freebsd/v6/user.rb +19 -0
- data/lib/specinfra/command/gentoo.rb +1 -0
- data/lib/specinfra/command/gentoo/base.rb +2 -0
- data/lib/specinfra/command/gentoo/base/package.rb +7 -0
- data/lib/specinfra/command/gentoo/base/service.rb +19 -0
- data/lib/specinfra/command/linux.rb +1 -0
- data/lib/specinfra/command/linux/base.rb +2 -0
- data/lib/specinfra/command/linux/base/bond.rb +11 -0
- data/lib/specinfra/command/linux/base/bridge.rb +11 -0
- data/lib/specinfra/command/linux/base/file.rb +20 -0
- data/lib/specinfra/command/linux/base/fstab.rb +9 -0
- data/lib/specinfra/command/linux/base/interface.rb +38 -0
- data/lib/specinfra/command/linux/base/inventory.rb +31 -0
- data/lib/specinfra/command/linux/base/ip6tables.rb +15 -0
- data/lib/specinfra/command/linux/base/iptables.rb +12 -0
- data/lib/specinfra/command/linux/base/kernel_module.rb +7 -0
- data/lib/specinfra/command/linux/base/lxc_container.rb +11 -0
- data/lib/specinfra/command/linux/base/package.rb +2 -0
- data/lib/specinfra/command/linux/base/ppa.rb +2 -0
- data/lib/specinfra/command/linux/base/selinux.rb +12 -0
- data/lib/specinfra/command/linux/base/selinux_module.rb +16 -0
- data/lib/specinfra/command/linux/base/service.rb +2 -0
- data/lib/specinfra/command/linux/base/yumrepo.rb +2 -0
- data/lib/specinfra/command/linux/base/zfs.rb +5 -0
- data/lib/specinfra/command/module.rb +7 -0
- data/lib/specinfra/command/module/service/daemontools.rb +46 -0
- data/lib/specinfra/command/module/service/delegator.rb +20 -0
- data/lib/specinfra/command/module/service/god.rb +13 -0
- data/lib/specinfra/command/module/service/init.rb +42 -0
- data/lib/specinfra/command/module/service/monit.rb +13 -0
- data/lib/specinfra/command/module/service/runit.rb +13 -0
- data/lib/specinfra/command/module/service/supervisor.rb +13 -0
- data/lib/specinfra/command/module/service/systemd.rb +41 -0
- data/lib/specinfra/command/module/service/upstart.rb +13 -0
- data/lib/specinfra/command/module/ss.rb +39 -0
- data/lib/specinfra/command/module/systemd.rb +12 -0
- data/lib/specinfra/command/module/zfs.rb +25 -0
- data/lib/specinfra/command/nexus.rb +1 -0
- data/lib/specinfra/command/nexus/base.rb +2 -0
- data/lib/specinfra/command/nexus/base/file.rb +8 -0
- data/lib/specinfra/command/nexus/base/host.rb +2 -0
- data/lib/specinfra/command/nexus/base/iptables.rb +11 -0
- data/lib/specinfra/command/nexus/base/package.rb +30 -0
- data/lib/specinfra/command/nexus/base/port.rb +5 -0
- data/lib/specinfra/command/nexus/base/service.rb +2 -0
- data/lib/specinfra/command/nexus/base/yumrepo.rb +11 -0
- data/lib/specinfra/command/nexus/v7.rb +3 -0
- data/lib/specinfra/command/nixos.rb +1 -0
- data/lib/specinfra/command/nixos/base.rb +2 -0
- data/lib/specinfra/command/nixos/base/package.rb +17 -0
- data/lib/specinfra/command/nixos/base/service.rb +5 -0
- data/lib/specinfra/command/openbsd.rb +1 -0
- data/lib/specinfra/command/openbsd/base.rb +4 -0
- data/lib/specinfra/command/openbsd/base/bond.rb +11 -0
- data/lib/specinfra/command/openbsd/base/bridge.rb +11 -0
- data/lib/specinfra/command/openbsd/base/file.rb +47 -0
- data/lib/specinfra/command/openbsd/base/fstab.rb +9 -0
- data/lib/specinfra/command/openbsd/base/interface.rb +40 -0
- data/lib/specinfra/command/openbsd/base/inventory.rb +28 -0
- data/lib/specinfra/command/openbsd/base/mail_alias.rb +7 -0
- data/lib/specinfra/command/openbsd/base/package.rb +15 -0
- data/lib/specinfra/command/openbsd/base/port.rb +7 -0
- data/lib/specinfra/command/openbsd/base/routing_table.rb +9 -0
- data/lib/specinfra/command/openbsd/base/service.rb +11 -0
- data/lib/specinfra/command/openbsd/base/user.rb +11 -0
- data/lib/specinfra/command/opensuse.rb +1 -0
- data/lib/specinfra/command/opensuse/base.rb +3 -0
- data/lib/specinfra/command/opensuse/base/service.rb +12 -0
- data/lib/specinfra/command/plamo.rb +1 -0
- data/lib/specinfra/command/plamo/base.rb +3 -0
- data/lib/specinfra/command/plamo/base/package.rb +11 -0
- data/lib/specinfra/command/plamo/base/service.rb +14 -0
- data/lib/specinfra/command/redhat.rb +1 -0
- data/lib/specinfra/command/redhat/base.rb +2 -0
- data/lib/specinfra/command/redhat/base/file.rb +8 -0
- data/lib/specinfra/command/redhat/base/host.rb +2 -0
- data/lib/specinfra/command/redhat/base/iptables.rb +11 -0
- data/lib/specinfra/command/redhat/base/package.rb +39 -0
- data/lib/specinfra/command/redhat/base/port.rb +2 -0
- data/lib/specinfra/command/redhat/base/service.rb +2 -0
- data/lib/specinfra/command/redhat/base/yumrepo.rb +13 -0
- data/lib/specinfra/command/redhat/v5.rb +3 -0
- data/lib/specinfra/command/redhat/v5/iptables.rb +10 -0
- data/lib/specinfra/command/redhat/v7.rb +3 -0
- data/lib/specinfra/command/redhat/v7/host.rb +15 -0
- data/lib/specinfra/command/redhat/v7/port.rb +5 -0
- data/lib/specinfra/command/redhat/v7/service.rb +5 -0
- data/lib/specinfra/command/smartos.rb +1 -0
- data/lib/specinfra/command/smartos/base.rb +3 -0
- data/lib/specinfra/command/smartos/base/file.rb +11 -0
- data/lib/specinfra/command/smartos/base/package.rb +15 -0
- data/lib/specinfra/command/smartos/base/service.rb +11 -0
- data/lib/specinfra/command/solaris.rb +1 -0
- data/lib/specinfra/command/solaris/base.rb +2 -0
- data/lib/specinfra/command/solaris/base/cron.rb +12 -0
- data/lib/specinfra/command/solaris/base/file.rb +20 -0
- data/lib/specinfra/command/solaris/base/group.rb +8 -0
- data/lib/specinfra/command/solaris/base/host.rb +14 -0
- data/lib/specinfra/command/solaris/base/inventory.rb +37 -0
- data/lib/specinfra/command/solaris/base/ipfilter.rb +7 -0
- data/lib/specinfra/command/solaris/base/ipnat.rb +14 -0
- data/lib/specinfra/command/solaris/base/package.rb +14 -0
- data/lib/specinfra/command/solaris/base/port.rb +13 -0
- data/lib/specinfra/command/solaris/base/service.rb +24 -0
- data/lib/specinfra/command/solaris/base/user.rb +15 -0
- data/lib/specinfra/command/solaris/base/zfs.rb +13 -0
- data/lib/specinfra/command/solaris/v10.rb +2 -0
- data/lib/specinfra/command/solaris/v10/file.rb +42 -0
- data/lib/specinfra/command/solaris/v10/group.rb +7 -0
- data/lib/specinfra/command/solaris/v10/host.rb +13 -0
- data/lib/specinfra/command/solaris/v10/package.rb +11 -0
- data/lib/specinfra/command/solaris/v10/user.rb +18 -0
- data/lib/specinfra/command/suse.rb +1 -0
- data/lib/specinfra/command/suse/base.rb +2 -0
- data/lib/specinfra/command/suse/base/package.rb +21 -0
- data/lib/specinfra/command/suse/base/service.rb +14 -0
- data/lib/specinfra/command/ubuntu.rb +11 -0
- data/lib/specinfra/command/ubuntu/base.rb +2 -0
- data/lib/specinfra/command/ubuntu/base/ppa.rb +17 -0
- data/lib/specinfra/command/ubuntu/base/service.rb +7 -0
- data/lib/specinfra/command/ubuntu/v15.rb +1 -0
- data/lib/specinfra/command/ubuntu/v15/service.rb +5 -0
- data/lib/specinfra/command/windows.rb +1 -0
- data/lib/specinfra/command/windows/base.rb +22 -0
- data/lib/specinfra/command/windows/base/feature.rb +17 -0
- data/lib/specinfra/command/windows/base/file.rb +113 -0
- data/lib/specinfra/command/windows/base/group.rb +11 -0
- data/lib/specinfra/command/windows/base/host.rb +25 -0
- data/lib/specinfra/command/windows/base/hot_fix.rb +19 -0
- data/lib/specinfra/command/windows/base/iis_app_pool.rb +66 -0
- data/lib/specinfra/command/windows/base/iis_website.rb +59 -0
- data/lib/specinfra/command/windows/base/package.rb +11 -0
- data/lib/specinfra/command/windows/base/port.rb +17 -0
- data/lib/specinfra/command/windows/base/process.rb +31 -0
- data/lib/specinfra/command/windows/base/registry_key.rb +53 -0
- data/lib/specinfra/command/windows/base/scheduled_task.rb +10 -0
- data/lib/specinfra/command/windows/base/service.rb +31 -0
- data/lib/specinfra/command/windows/base/user.rb +22 -0
- data/lib/specinfra/command_factory.rb +83 -0
- data/lib/specinfra/command_result.rb +28 -0
- data/lib/specinfra/configuration.rb +62 -0
- data/lib/specinfra/core.rb +18 -0
- data/lib/specinfra/ec2_metadata.rb +93 -0
- data/lib/specinfra/ext.rb +2 -0
- data/lib/specinfra/ext/class.rb +9 -0
- data/lib/specinfra/ext/string.rb +14 -0
- data/lib/specinfra/helper.rb +6 -0
- data/lib/specinfra/helper/configuration.rb +41 -0
- data/lib/specinfra/helper/detect_os.rb +38 -0
- data/lib/specinfra/helper/detect_os/aix.rb +12 -0
- data/lib/specinfra/helper/detect_os/alpine.rb +8 -0
- data/lib/specinfra/helper/detect_os/arch.rb +7 -0
- data/lib/specinfra/helper/detect_os/coreos.rb +18 -0
- data/lib/specinfra/helper/detect_os/darwin.rb +11 -0
- data/lib/specinfra/helper/detect_os/debian.rb +26 -0
- data/lib/specinfra/helper/detect_os/esxi.rb +10 -0
- data/lib/specinfra/helper/detect_os/freebsd.rb +11 -0
- data/lib/specinfra/helper/detect_os/gentoo.rb +7 -0
- data/lib/specinfra/helper/detect_os/nexus.rb +14 -0
- data/lib/specinfra/helper/detect_os/nixos.rb +7 -0
- data/lib/specinfra/helper/detect_os/openbsd.rb +11 -0
- data/lib/specinfra/helper/detect_os/plamo.rb +7 -0
- data/lib/specinfra/helper/detect_os/redhat.rb +31 -0
- data/lib/specinfra/helper/detect_os/solaris.rb +15 -0
- data/lib/specinfra/helper/detect_os/suse.rb +15 -0
- data/lib/specinfra/helper/docker.rb +11 -0
- data/lib/specinfra/helper/host_inventory.rb +12 -0
- data/lib/specinfra/helper/lxc.rb +11 -0
- data/lib/specinfra/helper/os.rb +35 -0
- data/lib/specinfra/helper/properties.rb +14 -0
- data/lib/specinfra/helper/set.rb +10 -0
- data/lib/specinfra/host_inventory.rb +68 -0
- data/lib/specinfra/host_inventory/base.rb +14 -0
- data/lib/specinfra/host_inventory/cpu.rb +77 -0
- data/lib/specinfra/host_inventory/domain.rb +16 -0
- data/lib/specinfra/host_inventory/ec2.rb +11 -0
- data/lib/specinfra/host_inventory/filesystem.rb +31 -0
- data/lib/specinfra/host_inventory/fqdn.rb +16 -0
- data/lib/specinfra/host_inventory/hostname.rb +16 -0
- data/lib/specinfra/host_inventory/kernel.rb +27 -0
- data/lib/specinfra/host_inventory/memory.rb +83 -0
- data/lib/specinfra/host_inventory/platform.rb +9 -0
- data/lib/specinfra/host_inventory/platform_version.rb +15 -0
- data/lib/specinfra/host_inventory/virtualization.rb +39 -0
- data/lib/specinfra/processor.rb +229 -0
- data/lib/specinfra/properties.rb +17 -0
- data/lib/specinfra/runner.rb +35 -0
- data/lib/specinfra/version.rb +3 -0
- data/spec/backend/exec/build_command_spec.rb +148 -0
- data/spec/backend/exec/child_process_spec.rb +18 -0
- data/spec/backend/exec/env_spec.rb +16 -0
- data/spec/backend/exec/read_noblock_spec.rb +50 -0
- data/spec/backend/exec/stdxxx_handler_spec.rb +25 -0
- data/spec/backend/ssh/build_command_spec.rb +115 -0
- data/spec/command/amazon/interface_spec.rb +9 -0
- data/spec/command/amazon/package_spec.rb +7 -0
- data/spec/command/amazon/service_spec.rb +28 -0
- data/spec/command/base/file_spec.rb +91 -0
- data/spec/command/base/group_spec.rb +16 -0
- data/spec/command/base/localhost_spec.rb +7 -0
- data/spec/command/base/package_spec.rb +11 -0
- data/spec/command/base/user_spec.rb +59 -0
- data/spec/command/darwin/file_spec.rb +16 -0
- data/spec/command/darwin/user_spec.rb +15 -0
- data/spec/command/debian/service_spec.rb +28 -0
- data/spec/command/esxi/package_spec.rb +8 -0
- data/spec/command/factory_spec.rb +30 -0
- data/spec/command/freebsd/file_spec.rb +12 -0
- data/spec/command/freebsd/interface_spec.rb +28 -0
- data/spec/command/linux/bond_spec.rb +12 -0
- data/spec/command/linux/bridge_spec.rb +12 -0
- data/spec/command/linux/file_spec.rb +12 -0
- data/spec/command/linux/interface_spec.rb +24 -0
- data/spec/command/linux/inventory_spec.rb +15 -0
- data/spec/command/linux/ip6tables_spec.rb +7 -0
- data/spec/command/linux/selinux_module_spec.rb +12 -0
- data/spec/command/linux/selinux_spec.rb +8 -0
- data/spec/command/module/service/daemontools_spec.rb +18 -0
- data/spec/command/module/service/init_spec.rb +18 -0
- data/spec/command/module/service/systemd_spec.rb +16 -0
- data/spec/command/module/ss_spec.rb +28 -0
- data/spec/command/module/systemd_spec.rb +19 -0
- data/spec/command/module/zfs_spec.rb +6 -0
- data/spec/command/openbsd/file_spec.rb +12 -0
- data/spec/command/openbsd/interface_spec.rb +28 -0
- data/spec/command/redhat/package_spec.rb +8 -0
- data/spec/command/redhat/service_spec.rb +28 -0
- data/spec/command/redhat7/host_spec.rb +13 -0
- data/spec/command/redhat7/interface_spec.rb +9 -0
- data/spec/command/redhat7/port_spec.rb +8 -0
- data/spec/command/redhat7/service_spec.rb +32 -0
- data/spec/command/ubuntu/ppa_spec.rb +12 -0
- data/spec/command/windows/registry_key_spec.rb +36 -0
- data/spec/configuration_spec.rb +14 -0
- data/spec/helper/detect_os/aix_spec.rb +58 -0
- data/spec/helper/detect_os/darwin_spec.rb +42 -0
- data/spec/helper/detect_os/esxi_spec.rb +22 -0
- data/spec/helper/detect_os/freebsd_spec.rb +42 -0
- data/spec/helper/detect_os/openbsd_spec.rb +42 -0
- data/spec/helper/os_spec.rb +58 -0
- data/spec/helper/properties_spec.rb +11 -0
- data/spec/helper/set_spec.rb +14 -0
- data/spec/host_inventory/aix/filesystem_spec.rb +107 -0
- data/spec/host_inventory/darwin/filesystem_spec.rb +63 -0
- data/spec/host_inventory/freebsd/filesystem_spec.rb +123 -0
- data/spec/host_inventory/linux/cpu_spec.rb +123 -0
- data/spec/host_inventory/linux/filesystem_spec.rb +53 -0
- data/spec/host_inventory/linux/kernel_spec.rb +33 -0
- data/spec/host_inventory/linux/memory_spec.rb +145 -0
- data/spec/host_inventory/linux/virtualization_docker_spec.rb +134 -0
- data/spec/host_inventory/linux/virtualization_kvm_spec.rb +132 -0
- data/spec/host_inventory/openbsd/filesystem_spec.rb +43 -0
- data/spec/host_inventory/solaris/filesystem_spec.rb +137 -0
- data/spec/spec_helper.rb +26 -0
- data/specinfra-cisco.gemspec +28 -0
- metadata +613 -0
@@ -0,0 +1,8 @@
|
|
1
|
+
function CheckFileAccessRules
|
2
|
+
{
|
3
|
+
param($path, $identity, $rules)
|
4
|
+
|
5
|
+
$accessRules = @((Get-Acl $path).access | Where-Object {$_.AccessControlType -eq 'Allow' -and $_.IdentityReference -eq $identity })
|
6
|
+
$match = @($accessRules | Where-Object {($_.FileSystemRights.ToString().Split(',') | % {$_.trim()} | ? {$rules -contains $_}) -ne $null})
|
7
|
+
$match.count -gt 0
|
8
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
function CropText
|
2
|
+
{
|
3
|
+
param($text, $fromPattern, $toPattern)
|
4
|
+
|
5
|
+
$from, $to = ([regex]::matches($text, $fromPattern)), ([regex]::matches($text, $toPattern))
|
6
|
+
if ($from.count -gt 0 -and $to.count -gt 0) {
|
7
|
+
$text.substring($from[0].index, $to[0].index + $to[0].length - $from[0].index)
|
8
|
+
} else {
|
9
|
+
""
|
10
|
+
}
|
11
|
+
}
|
@@ -0,0 +1,90 @@
|
|
1
|
+
function FindIISWebsite
|
2
|
+
{
|
3
|
+
param($name)
|
4
|
+
|
5
|
+
Import-Module WebAdministration
|
6
|
+
|
7
|
+
Try {
|
8
|
+
Get-Item "IIS:\Sites\$name" -Erroraction silentlycontinue
|
9
|
+
}
|
10
|
+
Catch [System.IO.FileNotFoundException] {
|
11
|
+
Get-Item "IIS:\Sites\$name" -Erroraction silentlycontinue
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
function FindIISAppPool
|
16
|
+
{
|
17
|
+
param($name)
|
18
|
+
|
19
|
+
Import-Module WebAdministration
|
20
|
+
|
21
|
+
Try {
|
22
|
+
Get-Item "IIS:\AppPools\$name" -Erroraction silentlycontinue
|
23
|
+
}
|
24
|
+
Catch [System.IO.FileNotFoundException] {
|
25
|
+
Get-Item "IIS:\AppPools\$name" -Erroraction silentlycontinue
|
26
|
+
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
function FindSiteBindings
|
31
|
+
{
|
32
|
+
param($name, $protocol, $hostHeader, $port, $ipAddress)
|
33
|
+
|
34
|
+
Import-Module WebAdministration
|
35
|
+
Try {
|
36
|
+
Get-WebBinding -Name $name -Protocol $protocol -HostHeader $hostHeader -Port $port -IPAddress $ipAddress
|
37
|
+
}
|
38
|
+
Catch [System.IO.FileNotFoundException] {
|
39
|
+
Get-WebBinding -Name $name -Protocol $protocol -HostHeader $hostHeader -Port $port -IPAddress $ipAddress
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
function FindSiteVirtualDir
|
44
|
+
{
|
45
|
+
param($name, $vdir, $path)
|
46
|
+
|
47
|
+
Import-Module WebAdministration
|
48
|
+
|
49
|
+
$webVirtDirPath = [string]::Format('IIS:\Sites\{0}\{1}',$name, $vdir);
|
50
|
+
if (Test-Path $webVirtDirPath)
|
51
|
+
{
|
52
|
+
if ([string]::IsNullOrEmpty($path))
|
53
|
+
{
|
54
|
+
$true
|
55
|
+
}
|
56
|
+
else
|
57
|
+
{
|
58
|
+
(Get-Item $webVirtDirPath).physicalPath -eq $path
|
59
|
+
}
|
60
|
+
}
|
61
|
+
else
|
62
|
+
{
|
63
|
+
$false
|
64
|
+
}
|
65
|
+
}
|
66
|
+
|
67
|
+
function FindSiteApplication
|
68
|
+
{
|
69
|
+
param($name, $app, $pool, $physicalPath)
|
70
|
+
|
71
|
+
Import-Module WebAdministration
|
72
|
+
|
73
|
+
$path = "IIS:\Sites\${name}\${app}"
|
74
|
+
$result = $false
|
75
|
+
if (Test-Path $path)
|
76
|
+
{
|
77
|
+
$result = $true
|
78
|
+
if ([string]::IsNullOrEmpty($pool) -eq $false)
|
79
|
+
{
|
80
|
+
$result = $result -and (Get-Item $path).applicationPool -eq $pool
|
81
|
+
}
|
82
|
+
|
83
|
+
if ([string]::IsNullOrEmpty($physicalPath) -eq $false)
|
84
|
+
{
|
85
|
+
$result = $result -and (Get-Item $path).physicalPath -eq $physicalPath
|
86
|
+
}
|
87
|
+
}
|
88
|
+
|
89
|
+
$result
|
90
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
function FindInstalledApplication
|
2
|
+
{
|
3
|
+
param($appName, $appVersion)
|
4
|
+
|
5
|
+
if ((Get-WmiObject win32_operatingsystem).OSArchitecture -notmatch '64')
|
6
|
+
{
|
7
|
+
$keys= (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*')
|
8
|
+
$possible_path= 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
|
9
|
+
if (Test-Path $possible_path)
|
10
|
+
{
|
11
|
+
$keys+= (Get-ItemProperty $possible_path)
|
12
|
+
}
|
13
|
+
}
|
14
|
+
else
|
15
|
+
{
|
16
|
+
$keys = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*','HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*')
|
17
|
+
$possible_path= 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
|
18
|
+
if (Test-Path $possible_path)
|
19
|
+
{
|
20
|
+
$keys+= (Get-ItemProperty $possible_path)
|
21
|
+
}
|
22
|
+
$possible_path= 'HKCU:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
|
23
|
+
if (Test-Path $possible_path)
|
24
|
+
{
|
25
|
+
$keys+= (Get-ItemProperty $possible_path)
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
if ($appVersion -eq $null) {
|
30
|
+
@($keys | Where-Object {$_.DisplayName -like $appName -or $_.PSChildName -like $appName}).Length -gt 0
|
31
|
+
}
|
32
|
+
else{
|
33
|
+
@($keys | Where-Object {$_.DisplayName -like $appName -or $_.PSChildName -like $appName } | Where-Object {$_.DisplayVersion -eq $appVersion} ).Length -gt 0
|
34
|
+
}
|
35
|
+
|
36
|
+
}
|
37
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
function FindInstalledHotFix
|
2
|
+
{
|
3
|
+
param($description, $hotFixId)
|
4
|
+
|
5
|
+
Write-Host "Num Args:" $args.Length;
|
6
|
+
foreach ($arg in $args)
|
7
|
+
{
|
8
|
+
Write-Host "Arg: $arg";
|
9
|
+
}
|
10
|
+
|
11
|
+
Write-Host $description
|
12
|
+
Write-Host $hotFixId
|
13
|
+
|
14
|
+
$keys= (Get-WmiObject -Class WIN32_QuickFixEngineering)
|
15
|
+
|
16
|
+
@($keys | Where-Object {$_.HotFixID -like $hotFixId}).Length -gt 0
|
17
|
+
|
18
|
+
}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
function FindUser
|
2
|
+
{
|
3
|
+
param($userName, $domain)
|
4
|
+
if ($domain -eq $null) {$selectionCriteria = " and LocalAccount = true"}
|
5
|
+
else {$selectionCriteria = " and Domain = '$domain'"}
|
6
|
+
|
7
|
+
Get-WmiObject Win32_UserAccount -filter "Name = '$userName' $selectionCriteria"
|
8
|
+
}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
function FindUserGroup
|
2
|
+
{
|
3
|
+
param($userName, $groupName, $userDomain, $groupDomain)
|
4
|
+
$user = FindUser -userName $userName -domain $userDomain
|
5
|
+
$group = FindGroup -groupName $groupName -domain $groupDomain
|
6
|
+
if ($user -and $group) {
|
7
|
+
Get-WmiObject Win32_GroupUser -filter ("GroupComponent = 'Win32_Group.Domain=`"" + $group.domain + "`",Name=`"" + $group.name + "`"' and PartComponent = 'Win32_UserAccount.Domain=`"" + $user.domain + "`",Name=`"" + $user.name + "`"'")
|
8
|
+
}
|
9
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
function IsPortListening
|
2
|
+
{
|
3
|
+
param($portNumber, $protocol)
|
4
|
+
$netstatOutput = netstat -an | Out-String
|
5
|
+
$networkIPs = (Get-WmiObject Win32_NetworkAdapterConfiguration | ? {$_.IPEnabled}) | %{ $_.IPAddress[0] }
|
6
|
+
[array] $networkIPs += "0.0.0.0"
|
7
|
+
foreach ($ipaddress in $networkIPs)
|
8
|
+
{
|
9
|
+
$matchExpression = ("$ipaddress" + ":" + $portNumber)
|
10
|
+
if ($protocol) { $matchExpression = ($protocol.toUpper() + "\s+$matchExpression") }
|
11
|
+
if ($netstatOutput -match $matchExpression) { return $true }
|
12
|
+
}
|
13
|
+
$false
|
14
|
+
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
function IsRemotePortListening{
|
2
|
+
param(
|
3
|
+
[string]$hostname,
|
4
|
+
[string]$proto="tcp",
|
5
|
+
[int]$port,
|
6
|
+
[int]$timeout)
|
7
|
+
|
8
|
+
|
9
|
+
If ($proto -eq "tcp") {
|
10
|
+
$tcpobject = new-Object system.Net.Sockets.TcpClient
|
11
|
+
$connect = $tcpobject.BeginConnect($hostname,$port,$null,$null)
|
12
|
+
$wait = $connect.AsyncWaitHandle.WaitOne($timeout * 1000,$false)
|
13
|
+
#If timeout
|
14
|
+
If(!$wait) {
|
15
|
+
$tcpobject.Close()
|
16
|
+
return $false
|
17
|
+
}
|
18
|
+
else{
|
19
|
+
$result = $tcpobject.Connected
|
20
|
+
$tcpobject.Close()
|
21
|
+
return $result
|
22
|
+
}
|
23
|
+
}
|
24
|
+
elseif ($proto -eq "udp") {
|
25
|
+
$udpobject = new-Object system.Net.Sockets.Udpclient
|
26
|
+
$udpobject.client.ReceiveTimeout = $timeout * 1000
|
27
|
+
$udpobject.Connect($hostname,$port)
|
28
|
+
$a = new-object system.text.asciiencoding
|
29
|
+
$byte = $a.GetBytes("$(Get-Date)")
|
30
|
+
[void]$udpobject.Send($byte,$byte.length)
|
31
|
+
$remoteendpoint = New-Object system.net.ipendpoint([system.net.ipaddress]::Any,0)
|
32
|
+
try{
|
33
|
+
#Blocks until a message returns on this socket from a remote host.
|
34
|
+
$receivebytes = $udpobject.Receive([ref]$remoteendpoint)
|
35
|
+
[string]$returndata = $a.GetString($receivebytes)
|
36
|
+
If ($returndata) {
|
37
|
+
$udpobject.close()
|
38
|
+
return $true
|
39
|
+
}
|
40
|
+
else{
|
41
|
+
return $false
|
42
|
+
}
|
43
|
+
}
|
44
|
+
catch{
|
45
|
+
return $false
|
46
|
+
}
|
47
|
+
}
|
48
|
+
else{
|
49
|
+
throw "Protocol ${proto} not supported"
|
50
|
+
}
|
51
|
+
}
|
@@ -0,0 +1,68 @@
|
|
1
|
+
function ListWindowsFeatures
|
2
|
+
{
|
3
|
+
|
4
|
+
param(
|
5
|
+
[string]$feature,
|
6
|
+
[string]$provider="dism"
|
7
|
+
)
|
8
|
+
|
9
|
+
$cachepath = "${env:temp}/ListWindowsFeatures-${provider}.xml"
|
10
|
+
$maxAge = 2
|
11
|
+
|
12
|
+
$cache = Get-Item $cachepath -erroraction SilentlyContinue
|
13
|
+
|
14
|
+
if($cache -ne $null -and ((get-date) - $cache.LastWriteTime).minutes -lt $maxage){
|
15
|
+
$features = Import-Clixml $cachepath | Select *| Where-Object {(($_.name -like $feature) -or ($_.displayName -like $feature)) -and (($_.installed -eq $true) -or ($_.state -eq "Enabled"))}
|
16
|
+
return $features
|
17
|
+
}
|
18
|
+
else{
|
19
|
+
|
20
|
+
switch($provider)
|
21
|
+
{
|
22
|
+
"dism" { return features_dism | Select * | Where-Object {($_.name -eq $feature) -and ($_.state -eq "Enabled")} }
|
23
|
+
"powershell" { return features_powershell | Select * | Where-Object {(($_.name -like $feature) -or ($_.displayName -like $feature)) -and ($_.installed -eq $true)} }
|
24
|
+
default {throw "Unsupported provider"}
|
25
|
+
}
|
26
|
+
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
function features_dism{
|
31
|
+
try
|
32
|
+
{
|
33
|
+
$out = DISM /Online /Get-Features /Format:List | Where-Object {$_}
|
34
|
+
|
35
|
+
if($LASTEXITCODE -ne 0)
|
36
|
+
{
|
37
|
+
Write-Error $out
|
38
|
+
Break
|
39
|
+
}
|
40
|
+
|
41
|
+
$f = $out[4..($out.length-2)]
|
42
|
+
$features = for($i=0; $i -lt $f.length;$i+=2)
|
43
|
+
{
|
44
|
+
$tmp = $f[$i],$f[$i+1] -replace '^([^:]+:\s)'
|
45
|
+
|
46
|
+
New-Object PSObject -Property @{
|
47
|
+
Name = $tmp[0]
|
48
|
+
State = $tmp[1]
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
$features | Export-Clixml $cachepath
|
53
|
+
|
54
|
+
return $features
|
55
|
+
}
|
56
|
+
catch
|
57
|
+
{
|
58
|
+
Throw
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
function features_powershell{
|
63
|
+
$ProgressPreference = "SilentlyContinue"
|
64
|
+
import-module servermanager
|
65
|
+
$features = Get-WindowsFeature
|
66
|
+
$features | Export-Clixml $cachepath
|
67
|
+
return Get-WindowsFeature
|
68
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'singleton'
|
2
|
+
|
3
|
+
module Specinfra
|
4
|
+
module Backend
|
5
|
+
class ShellScript < Base
|
6
|
+
def initialize(config = {})
|
7
|
+
super
|
8
|
+
|
9
|
+
@lines = [ "#!/bin/sh", "" ]
|
10
|
+
ObjectSpace.define_finalizer(self, Writer.new(@lines))
|
11
|
+
end
|
12
|
+
|
13
|
+
def run_command(cmd, opts={})
|
14
|
+
@lines << cmd
|
15
|
+
CommandResult.new
|
16
|
+
end
|
17
|
+
|
18
|
+
class Writer
|
19
|
+
def initialize(lines)
|
20
|
+
@lines = lines
|
21
|
+
end
|
22
|
+
|
23
|
+
def call(*args)
|
24
|
+
puts @lines
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,182 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'specinfra/backend/exec'
|
3
|
+
require 'net/ssh'
|
4
|
+
require 'net/scp'
|
5
|
+
|
6
|
+
module Specinfra
|
7
|
+
module Backend
|
8
|
+
class Ssh < Exec
|
9
|
+
def run_command(cmd, opt={})
|
10
|
+
cmd = build_command(cmd)
|
11
|
+
cmd = add_pre_command(cmd)
|
12
|
+
|
13
|
+
if get_config(:ssh_without_env)
|
14
|
+
ret = ssh_exec!(cmd)
|
15
|
+
else
|
16
|
+
ret = with_env do
|
17
|
+
ssh_exec!(cmd)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
ret[:stdout].gsub!(/\r\n/, "\n")
|
22
|
+
ret[:stdout].gsub!(/\A\n/, "") if sudo?
|
23
|
+
|
24
|
+
if @example
|
25
|
+
@example.metadata[:command] = cmd
|
26
|
+
@example.metadata[:stdout] = ret[:stdout]
|
27
|
+
end
|
28
|
+
|
29
|
+
CommandResult.new ret
|
30
|
+
end
|
31
|
+
|
32
|
+
def send_file(from, to)
|
33
|
+
scp_upload!(from, to)
|
34
|
+
end
|
35
|
+
|
36
|
+
def send_directory(from, to)
|
37
|
+
scp_upload!(from, to, :recursive => true)
|
38
|
+
end
|
39
|
+
|
40
|
+
def build_command(cmd)
|
41
|
+
cmd = super(cmd)
|
42
|
+
if sudo?
|
43
|
+
cmd = "#{sudo} -p '#{prompt}' #{cmd}"
|
44
|
+
end
|
45
|
+
cmd
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
def prompt
|
50
|
+
'Password: '
|
51
|
+
end
|
52
|
+
|
53
|
+
def with_env
|
54
|
+
env = get_config(:env) || {}
|
55
|
+
env[:LANG] ||= 'C'
|
56
|
+
|
57
|
+
ssh_options = get_config(:ssh_options) || {}
|
58
|
+
ssh_options[:send_env] ||= []
|
59
|
+
|
60
|
+
env.each do |key, value|
|
61
|
+
key = key.to_s
|
62
|
+
ENV["_SPECINFRA_#{key}"] = ENV[key];
|
63
|
+
ENV[key] = value
|
64
|
+
ssh_options[:send_env] << key
|
65
|
+
end
|
66
|
+
|
67
|
+
yield
|
68
|
+
ensure
|
69
|
+
env.each do |key, value|
|
70
|
+
key = key.to_s
|
71
|
+
ENV[key] = ENV.delete("_SPECINFRA_#{key}");
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def create_ssh
|
76
|
+
Net::SSH.start(
|
77
|
+
get_config(:host),
|
78
|
+
get_config(:ssh_options)[:user],
|
79
|
+
get_config(:ssh_options)
|
80
|
+
)
|
81
|
+
end
|
82
|
+
|
83
|
+
def create_scp
|
84
|
+
ssh = get_config(:ssh)
|
85
|
+
if ssh.nil?
|
86
|
+
ssh = create_ssh
|
87
|
+
end
|
88
|
+
Net::SCP.new(ssh)
|
89
|
+
end
|
90
|
+
|
91
|
+
def scp_upload!(from, to, opt={})
|
92
|
+
if get_config(:scp).nil?
|
93
|
+
set_config(:scp, create_scp)
|
94
|
+
end
|
95
|
+
|
96
|
+
tmp = File.join('/tmp', File.basename(to))
|
97
|
+
scp = get_config(:scp)
|
98
|
+
scp.upload!(from, tmp, opt)
|
99
|
+
run_command(command.get(:move_file, tmp, to))
|
100
|
+
end
|
101
|
+
|
102
|
+
def ssh_exec!(command)
|
103
|
+
stdout_data = ''
|
104
|
+
stderr_data = ''
|
105
|
+
exit_status = nil
|
106
|
+
exit_signal = nil
|
107
|
+
retry_prompt = /^Sorry, try again/
|
108
|
+
|
109
|
+
if get_config(:ssh).nil?
|
110
|
+
set_config(:ssh, create_ssh)
|
111
|
+
end
|
112
|
+
|
113
|
+
ssh = get_config(:ssh)
|
114
|
+
ssh.open_channel do |channel|
|
115
|
+
if get_config(:sudo_password) or get_config(:request_pty)
|
116
|
+
channel.request_pty do |ch, success|
|
117
|
+
abort "Could not obtain pty " if !success
|
118
|
+
end
|
119
|
+
end
|
120
|
+
channel.exec("#{command}") do |ch, success|
|
121
|
+
abort "FAILED: couldn't execute command (ssh.channel.exec)" if !success
|
122
|
+
channel.on_data do |ch, data|
|
123
|
+
if data.match retry_prompt
|
124
|
+
abort 'Wrong sudo password! Please confirm your password.'
|
125
|
+
elsif data.match /^#{prompt}/
|
126
|
+
channel.send_data "#{get_config(:sudo_password)}\n"
|
127
|
+
else
|
128
|
+
stdout_data += data
|
129
|
+
@stdout_handler.call(data) if @stdout_handler
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
channel.on_extended_data do |ch, type, data|
|
134
|
+
if data.match /you must have a tty to run sudo/
|
135
|
+
abort 'Please write "set :request_pty, true" in your spec_helper.rb or other appropriate file.'
|
136
|
+
end
|
137
|
+
|
138
|
+
if data.match /^sudo: no tty present and no askpass program specified/
|
139
|
+
abort 'Please set sudo password to Specinfra.configuration.sudo_password.'
|
140
|
+
else
|
141
|
+
stderr_data += data
|
142
|
+
@stderr_handler.call(data) if @stderr_handler
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
channel.on_request("exit-status") do |ch, data|
|
147
|
+
exit_status = data.read_long
|
148
|
+
end
|
149
|
+
|
150
|
+
channel.on_request("exit-signal") do |ch, data|
|
151
|
+
exit_signal = data.read_long
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
ssh.loop
|
156
|
+
{ :stdout => stdout_data, :stderr => stderr_data, :exit_status => exit_status, :exit_signal => exit_signal }
|
157
|
+
end
|
158
|
+
|
159
|
+
def sudo
|
160
|
+
if sudo_path = get_config(:sudo_path)
|
161
|
+
sudo_path += '/sudo'
|
162
|
+
else
|
163
|
+
sudo_path = 'sudo'
|
164
|
+
end
|
165
|
+
|
166
|
+
sudo_options = get_config(:sudo_options)
|
167
|
+
if sudo_options
|
168
|
+
sudo_options = sudo_options.shelljoin if sudo_options.is_a?(Array)
|
169
|
+
sudo_options = ' ' + sudo_options
|
170
|
+
end
|
171
|
+
|
172
|
+
"#{sudo_path.shellescape}#{sudo_options}"
|
173
|
+
end
|
174
|
+
|
175
|
+
def sudo?
|
176
|
+
user = get_config(:ssh_options)[:user]
|
177
|
+
disable_sudo = get_config(:disable_sudo)
|
178
|
+
user != 'root' && !disable_sudo
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|