commit
				
					
						d17f11f80d
					
				
			
		
					 22 changed files with 906 additions and 11 deletions
				
			
		| 
						 | 
				
			
			@ -10,7 +10,7 @@ import collections
 | 
			
		|||
BETA_COMMANDS = set(('install', 'inventory', ))
 | 
			
		||||
# set of beta arguments for sub-commands
 | 
			
		||||
BETA_ARGS = {
 | 
			
		||||
    'config': set(('jobs', 'tag', 'all_tagged_hosts', )),
 | 
			
		||||
    'config': set(('jobs', 'tag', 'all_tagged_hosts', 'use_archiving', )),
 | 
			
		||||
}
 | 
			
		||||
EPILOG = "Get cdist at http://www.nico.schottelius.org/software/cdist/"
 | 
			
		||||
# Parser others can reuse
 | 
			
		||||
| 
						 | 
				
			
			@ -164,6 +164,15 @@ def get_parsers():
 | 
			
		|||
    parser['config_main'].add_argument(
 | 
			
		||||
           '-o', '--out-dir',
 | 
			
		||||
           help='directory to save cdist output in', dest="out_path")
 | 
			
		||||
    parser['config_main'].add_argument(
 | 
			
		||||
           '-R', '--use-archiving', nargs='?',
 | 
			
		||||
           choices=('tar', 'tgz', 'tbz2', 'txz',),
 | 
			
		||||
           help=('Operate by using archiving with compression where '
 | 
			
		||||
                 'apropriate. Supported values are: tar - tar archive, '
 | 
			
		||||
                 'tgz - gzip tar archive (the default), '
 | 
			
		||||
                 'tbz2 - bzip2 tar archive and txz - lzma tar archive.'),
 | 
			
		||||
           action='store', dest='use_archiving',
 | 
			
		||||
           const='tgz')
 | 
			
		||||
 | 
			
		||||
    # remote-copy and remote-exec defaults are environment variables
 | 
			
		||||
    # if set; if not then None - these will be futher handled after
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										71
									
								
								cdist/autil.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								cdist/autil.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,71 @@
 | 
			
		|||
# -*- coding: utf-8 -*-
 | 
			
		||||
#
 | 
			
		||||
# 2017 Darko Poljak (darko.poljak at gmail.com)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import cdist
 | 
			
		||||
import tarfile
 | 
			
		||||
import os
 | 
			
		||||
import glob
 | 
			
		||||
import tempfile
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
_ARCHIVING_MODES = {
 | 
			
		||||
    'tar': '',
 | 
			
		||||
    'tgz': 'gz',
 | 
			
		||||
    'tbz2': 'bz2',
 | 
			
		||||
    'txz': 'xz',
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
_UNARCHIVE_OPT = {
 | 
			
		||||
    'tar': None,
 | 
			
		||||
    'tgz': '-z',
 | 
			
		||||
    'tbz2': '-j',
 | 
			
		||||
    'txz': '-J',
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Archiving will be enabled if directory contains more than FILES_LIMIT files.
 | 
			
		||||
FILES_LIMIT = 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_extract_option(mode):
 | 
			
		||||
    return _UNARCHIVE_OPT[mode]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def tar(source, mode="tgz"):
 | 
			
		||||
    if mode not in _ARCHIVING_MODES:
 | 
			
		||||
        raise cdist.Error("Unsupported archiving mode {}.".format(mode))
 | 
			
		||||
 | 
			
		||||
    files = glob.glob1(source, '*')
 | 
			
		||||
    fcnt = len(files)
 | 
			
		||||
    if fcnt <= FILES_LIMIT:
 | 
			
		||||
        return None, fcnt
 | 
			
		||||
 | 
			
		||||
    tarmode = 'w:{}'.format(_ARCHIVING_MODES[mode])
 | 
			
		||||
    _, tarpath = tempfile.mkstemp(suffix='.' + mode)
 | 
			
		||||
    with tarfile.open(tarpath, tarmode, dereference=True) as tar:
 | 
			
		||||
        if os.path.isdir(source):
 | 
			
		||||
            for f in files:
 | 
			
		||||
                tar.add(os.path.join(source, f), arcname=f)
 | 
			
		||||
        else:
 | 
			
		||||
            tar.add(source)
 | 
			
		||||
    return tarpath, fcnt
 | 
			
		||||
| 
						 | 
				
			
			@ -302,7 +302,8 @@ class Config(object):
 | 
			
		|||
                remote_exec=remote_exec,
 | 
			
		||||
                remote_copy=remote_copy,
 | 
			
		||||
                base_path=args.remote_out_path,
 | 
			
		||||
                quiet_mode=args.quiet)
 | 
			
		||||
                quiet_mode=args.quiet,
 | 
			
		||||
                archiving_mode=args.use_archiving)
 | 
			
		||||
 | 
			
		||||
            c = cls(local, remote, dry_run=args.dry_run, jobs=args.jobs)
 | 
			
		||||
            c.run()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -63,7 +63,8 @@ class Remote(object):
 | 
			
		|||
                 remote_exec,
 | 
			
		||||
                 remote_copy,
 | 
			
		||||
                 base_path=None,
 | 
			
		||||
                 quiet_mode=None):
 | 
			
		||||
                 quiet_mode=None,
 | 
			
		||||
                 archiving_mode=None):
 | 
			
		||||
        self.target_host = target_host
 | 
			
		||||
        self._exec = remote_exec
 | 
			
		||||
        self._copy = remote_copy
 | 
			
		||||
| 
						 | 
				
			
			@ -73,6 +74,7 @@ class Remote(object):
 | 
			
		|||
        else:
 | 
			
		||||
            self.base_path = "/var/lib/cdist"
 | 
			
		||||
        self.quiet_mode = quiet_mode
 | 
			
		||||
        self.archiving_mode = archiving_mode
 | 
			
		||||
 | 
			
		||||
        self.conf_path = os.path.join(self.base_path, "conf")
 | 
			
		||||
        self.object_path = os.path.join(self.base_path, "object")
 | 
			
		||||
| 
						 | 
				
			
			@ -111,6 +113,11 @@ class Remote(object):
 | 
			
		|||
        self.run(["chmod", "0700", self.base_path])
 | 
			
		||||
        self.mkdir(self.conf_path)
 | 
			
		||||
 | 
			
		||||
    def rmfile(self, path):
 | 
			
		||||
        """Remove file on the remote side."""
 | 
			
		||||
        self.log.trace("Remote rm: %s", path)
 | 
			
		||||
        self.run(["rm", "-f",  path])
 | 
			
		||||
 | 
			
		||||
    def rmdir(self, path):
 | 
			
		||||
        """Remove directory on the remote side."""
 | 
			
		||||
        self.log.trace("Remote rmdir: %s", path)
 | 
			
		||||
| 
						 | 
				
			
			@ -121,12 +128,68 @@ class Remote(object):
 | 
			
		|||
        self.log.trace("Remote mkdir: %s", path)
 | 
			
		||||
        self.run(["mkdir", "-p", path])
 | 
			
		||||
 | 
			
		||||
    def extract_archive(self, path, mode):
 | 
			
		||||
        """Extract archive path on the remote side."""
 | 
			
		||||
        import cdist.autil as autil
 | 
			
		||||
 | 
			
		||||
        self.log.trace("Remote extract archive: %s", path)
 | 
			
		||||
        command = ["tar", "-x", "-m", "-C", ]
 | 
			
		||||
        directory = os.path.dirname(path)
 | 
			
		||||
        command.append(directory)
 | 
			
		||||
        xopt = autil.get_extract_option(mode)
 | 
			
		||||
        if xopt:
 | 
			
		||||
            command.append(xopt)
 | 
			
		||||
        command.append("-f")
 | 
			
		||||
        command.append(path)
 | 
			
		||||
        self.run(command)
 | 
			
		||||
 | 
			
		||||
    def _transfer_file(self, source, destination):
 | 
			
		||||
        command = self._copy.split()
 | 
			
		||||
        command.extend([source, '{0}:{1}'.format(
 | 
			
		||||
            _wrap_addr(self.target_host[0]), destination)])
 | 
			
		||||
        self._run_command(command)
 | 
			
		||||
 | 
			
		||||
    def transfer(self, source, destination, jobs=None):
 | 
			
		||||
        """Transfer a file or directory to the remote side."""
 | 
			
		||||
        self.log.trace("Remote transfer: %s -> %s", source, destination)
 | 
			
		||||
        # self.rmdir(destination)
 | 
			
		||||
        if os.path.isdir(source):
 | 
			
		||||
            self.mkdir(destination)
 | 
			
		||||
            used_archiving = False
 | 
			
		||||
            if self.archiving_mode:
 | 
			
		||||
                self.log.trace("Remote transfer in archiving mode")
 | 
			
		||||
                import cdist.autil as autil
 | 
			
		||||
 | 
			
		||||
                # create archive
 | 
			
		||||
                tarpath, fcnt = autil.tar(source, self.archiving_mode)
 | 
			
		||||
                if tarpath is None:
 | 
			
		||||
                    self.log.trace(("Files count {} is lower than {} limit, "
 | 
			
		||||
                                    "skipping archiving").format(
 | 
			
		||||
                                        fcnt, autil.FILES_LIMIT))
 | 
			
		||||
                else:
 | 
			
		||||
                    self.log.trace(("Archiving mode, tarpath: %s, file count: "
 | 
			
		||||
                                    "%s"), tarpath, fcnt)
 | 
			
		||||
                    # get archive name
 | 
			
		||||
                    tarname = os.path.basename(tarpath)
 | 
			
		||||
                    self.log.trace("Archiving mode tarname: %s", tarname)
 | 
			
		||||
                    # archive path at the remote
 | 
			
		||||
                    desttarpath = os.path.join(destination, tarname)
 | 
			
		||||
                    self.log.trace(
 | 
			
		||||
                        "Archiving mode desttarpath: %s", desttarpath)
 | 
			
		||||
                    # transfer archive to the remote side
 | 
			
		||||
                    self.log.trace("Archiving mode: transfering")
 | 
			
		||||
                    self._transfer_file(tarpath, desttarpath)
 | 
			
		||||
                    # extract archive at the remote
 | 
			
		||||
                    self.log.trace("Archiving mode: extracting")
 | 
			
		||||
                    self.extract_archive(desttarpath, self.archiving_mode)
 | 
			
		||||
                    # remove remote archive
 | 
			
		||||
                    self.log.trace("Archiving mode: removing remote archive")
 | 
			
		||||
                    self.rmfile(desttarpath)
 | 
			
		||||
                    # remove local archive
 | 
			
		||||
                    self.log.trace("Archiving mode: removing local archive")
 | 
			
		||||
                    os.remove(tarpath)
 | 
			
		||||
                    used_archiving = True
 | 
			
		||||
            if not used_archiving:
 | 
			
		||||
                if jobs:
 | 
			
		||||
                    self._transfer_dir_parallel(source, destination, jobs)
 | 
			
		||||
                else:
 | 
			
		||||
| 
						 | 
				
			
			@ -134,10 +197,7 @@ class Remote(object):
 | 
			
		|||
        elif jobs:
 | 
			
		||||
            raise cdist.Error("Source {} is not a directory".format(source))
 | 
			
		||||
        else:
 | 
			
		||||
            command = self._copy.split()
 | 
			
		||||
            command.extend([source, '{0}:{1}'.format(
 | 
			
		||||
                _wrap_addr(self.target_host[0]), destination)])
 | 
			
		||||
            self._run_command(command)
 | 
			
		||||
            self._transfer_file(source, destination)
 | 
			
		||||
 | 
			
		||||
    def _transfer_dir_commands(self, source, destination):
 | 
			
		||||
        for f in glob.glob1(source, '*'):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										57
									
								
								cdist/test/autil/__init__.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								cdist/test/autil/__init__.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,57 @@
 | 
			
		|||
# -*- coding: utf-8 -*-
 | 
			
		||||
#
 | 
			
		||||
# 2017 Darko Poljak (darko.poljak at gmail.com)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
from cdist import test
 | 
			
		||||
import cdist.autil as autil
 | 
			
		||||
import os
 | 
			
		||||
import os.path as op
 | 
			
		||||
import tarfile
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
my_dir = op.abspath(op.dirname(__file__))
 | 
			
		||||
fixtures = op.join(my_dir, 'fixtures')
 | 
			
		||||
explorers_path = op.join(fixtures, 'explorer')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class AUtilTestCase(test.CdistTestCase):
 | 
			
		||||
    def test_tar(self):
 | 
			
		||||
        test_modes = {
 | 
			
		||||
            'tar': 'r:',
 | 
			
		||||
            'tgz': 'r:gz',
 | 
			
		||||
            'tbz2': 'r:bz2',
 | 
			
		||||
            'txz': 'r:xz',
 | 
			
		||||
        }
 | 
			
		||||
        source = explorers_path
 | 
			
		||||
        for mode in test_modes:
 | 
			
		||||
            tarpath = autil.tar(source, mode)
 | 
			
		||||
            self.assertIsNotNone(tarpath)
 | 
			
		||||
            fcnt = 0
 | 
			
		||||
            with tarfile.open(tarpath, test_modes[mode]) as tar:
 | 
			
		||||
                for tarinfo in tar:
 | 
			
		||||
                    fcnt += 1
 | 
			
		||||
            os.remove(tarpath)
 | 
			
		||||
            self.assertGreater(fcnt, 0)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    import unittest
 | 
			
		||||
 | 
			
		||||
    unittest.main()
 | 
			
		||||
							
								
								
									
										40
									
								
								cdist/test/autil/fixtures/explorer/cpu_cores
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										40
									
								
								cdist/test/autil/fixtures/explorer/cpu_cores
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,40 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2014 Daniel Heule  (hda at sfs.biz)
 | 
			
		||||
# 2014 Thomas Oettli (otho at sfs.biz)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# FIXME: other system types (not linux ...)
 | 
			
		||||
 | 
			
		||||
os=$("$__explorer/os")
 | 
			
		||||
case "$os" in
 | 
			
		||||
    "macosx")
 | 
			
		||||
        echo "$(sysctl -n hw.physicalcpu)"
 | 
			
		||||
    ;;
 | 
			
		||||
 | 
			
		||||
    *)
 | 
			
		||||
        if [ -r /proc/cpuinfo ]; then
 | 
			
		||||
            cores="$(grep "core id" /proc/cpuinfo | sort | uniq | wc -l)"
 | 
			
		||||
            if [ ${cores} -eq 0 ]; then
 | 
			
		||||
                cores="1"
 | 
			
		||||
            fi
 | 
			
		||||
            echo "$cores"
 | 
			
		||||
        fi
 | 
			
		||||
    ;;
 | 
			
		||||
esac
 | 
			
		||||
							
								
								
									
										40
									
								
								cdist/test/autil/fixtures/explorer/cpu_sockets
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										40
									
								
								cdist/test/autil/fixtures/explorer/cpu_sockets
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,40 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2014 Daniel Heule  (hda at sfs.biz)
 | 
			
		||||
# 2014 Thomas Oettli (otho at sfs.biz)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# FIXME: other system types (not linux ...)
 | 
			
		||||
 | 
			
		||||
os=$("$__explorer/os")
 | 
			
		||||
case "$os" in
 | 
			
		||||
    "macosx")
 | 
			
		||||
        echo "$(system_profiler SPHardwareDataType | grep "Number of Processors" | awk -F': ' '{print $2}')"
 | 
			
		||||
    ;;
 | 
			
		||||
 | 
			
		||||
    *)
 | 
			
		||||
    if [ -r /proc/cpuinfo ]; then
 | 
			
		||||
        sockets="$(grep "physical id" /proc/cpuinfo | sort | uniq | wc -l)"
 | 
			
		||||
        if [ ${sockets} -eq 0 ]; then
 | 
			
		||||
            sockets="$(cat /proc/cpuinfo | grep "processor" | wc -l)"
 | 
			
		||||
        fi
 | 
			
		||||
        echo "${sockets}"
 | 
			
		||||
    fi
 | 
			
		||||
    ;;
 | 
			
		||||
esac
 | 
			
		||||
							
								
								
									
										2
									
								
								cdist/test/autil/fixtures/explorer/disks
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								cdist/test/autil/fixtures/explorer/disks
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
cd /dev
 | 
			
		||||
echo sd? hd? vd?
 | 
			
		||||
							
								
								
									
										25
									
								
								cdist/test/autil/fixtures/explorer/hostname
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										25
									
								
								cdist/test/autil/fixtures/explorer/hostname
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2010-2014 Nico Schottelius (nico-cdist at schottelius.org)
 | 
			
		||||
# 2012 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
if command -v uname >/dev/null; then
 | 
			
		||||
   uname -n
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										35
									
								
								cdist/test/autil/fixtures/explorer/init
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										35
									
								
								cdist/test/autil/fixtures/explorer/init
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,35 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2016 Daniel Heule (hda at sfs.biz)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Returns the process name of pid 1 ( normaly the init system )
 | 
			
		||||
# for example at linux this value is "init" or "systemd" in most cases
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
uname_s="$(uname -s)"
 | 
			
		||||
 | 
			
		||||
case "$uname_s" in
 | 
			
		||||
    Linux|FreeBSD)
 | 
			
		||||
        ps -o comm= -p 1 || true
 | 
			
		||||
    ;;
 | 
			
		||||
    *)
 | 
			
		||||
        # return a empty string as unknown value
 | 
			
		||||
        echo ""
 | 
			
		||||
    ;;
 | 
			
		||||
esac
 | 
			
		||||
							
								
								
									
										51
									
								
								cdist/test/autil/fixtures/explorer/interfaces
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										51
									
								
								cdist/test/autil/fixtures/explorer/interfaces
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,51 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2012 Sébastien Gross <seb•ɑƬ•chezwam•ɖɵʈ•org>
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# List all network interfaces in explorer/ifaces. One interface per line.
 | 
			
		||||
#
 | 
			
		||||
# If your OS is not supported please provide a ifconfig output
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# Use ip, if available
 | 
			
		||||
if command -v ip >/dev/null; then
 | 
			
		||||
    ip -o link show | sed -n 's/^[0-9]\+: \(.\+\): <.*/\1/p'
 | 
			
		||||
    exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if ! command -v ifconfig >/dev/null; then
 | 
			
		||||
   # no ifconfig, nothing we could do
 | 
			
		||||
   exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
uname_s="$(uname -s)"
 | 
			
		||||
REGEXP='s/^(.*)(:[[:space:]]*flags=|Link encap).*/\1/p'
 | 
			
		||||
 | 
			
		||||
case "$uname_s" in
 | 
			
		||||
    Darwin)
 | 
			
		||||
	ifconfig -a | sed -n -E "$REGEXP"
 | 
			
		||||
	;;
 | 
			
		||||
    Linux|*BSD)
 | 
			
		||||
	ifconfig -a | sed -n -r "$REGEXP"
 | 
			
		||||
	;;
 | 
			
		||||
    *)
 | 
			
		||||
	echo "Unsupported ifconfig output for $uname_s" >&2
 | 
			
		||||
	exit 1
 | 
			
		||||
	;;
 | 
			
		||||
esac
 | 
			
		||||
							
								
								
									
										1
									
								
								cdist/test/autil/fixtures/explorer/kernel_name
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/test/autil/fixtures/explorer/kernel_name
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
uname -s
 | 
			
		||||
							
								
								
									
										33
									
								
								cdist/test/autil/fixtures/explorer/lsb_codename
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										33
									
								
								cdist/test/autil/fixtures/explorer/lsb_codename
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,33 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
set +e
 | 
			
		||||
case "$($__explorer/os)" in
 | 
			
		||||
   openwrt)
 | 
			
		||||
      (. /etc/openwrt_release && echo "$DISTRIB_CODENAME")
 | 
			
		||||
   ;;
 | 
			
		||||
   *)
 | 
			
		||||
      lsb_release=$(command -v lsb_release)
 | 
			
		||||
      if [ -x "$lsb_release" ]; then
 | 
			
		||||
         $lsb_release --short --codename
 | 
			
		||||
      fi
 | 
			
		||||
   ;;
 | 
			
		||||
esac
 | 
			
		||||
							
								
								
									
										33
									
								
								cdist/test/autil/fixtures/explorer/lsb_description
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										33
									
								
								cdist/test/autil/fixtures/explorer/lsb_description
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,33 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
set +e
 | 
			
		||||
case "$($__explorer/os)" in
 | 
			
		||||
   openwrt)
 | 
			
		||||
      (. /etc/openwrt_release && echo "$DISTRIB_DESCRIPTION")
 | 
			
		||||
   ;;
 | 
			
		||||
   *)
 | 
			
		||||
      lsb_release=$(command -v lsb_release)
 | 
			
		||||
      if [ -x "$lsb_release" ]; then
 | 
			
		||||
         $lsb_release --short --description
 | 
			
		||||
      fi
 | 
			
		||||
   ;;
 | 
			
		||||
esac
 | 
			
		||||
							
								
								
									
										33
									
								
								cdist/test/autil/fixtures/explorer/lsb_id
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										33
									
								
								cdist/test/autil/fixtures/explorer/lsb_id
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,33 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
set +e
 | 
			
		||||
case "$($__explorer/os)" in
 | 
			
		||||
   openwrt)
 | 
			
		||||
      (. /etc/openwrt_release && echo "$DISTRIB_ID")
 | 
			
		||||
   ;;
 | 
			
		||||
   *)
 | 
			
		||||
      lsb_release=$(command -v lsb_release)
 | 
			
		||||
      if [ -x "$lsb_release" ]; then
 | 
			
		||||
         $lsb_release --short --id
 | 
			
		||||
      fi
 | 
			
		||||
   ;;
 | 
			
		||||
esac
 | 
			
		||||
							
								
								
									
										33
									
								
								cdist/test/autil/fixtures/explorer/lsb_release
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										33
									
								
								cdist/test/autil/fixtures/explorer/lsb_release
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,33 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
set +e
 | 
			
		||||
case "$($__explorer/os)" in
 | 
			
		||||
   openwrt)
 | 
			
		||||
      (. /etc/openwrt_release && echo "$DISTRIB_RELEASE")
 | 
			
		||||
   ;;
 | 
			
		||||
   *)
 | 
			
		||||
      lsb_release=$(command -v lsb_release)
 | 
			
		||||
      if [ -x "$lsb_release" ]; then
 | 
			
		||||
         $lsb_release --short --release
 | 
			
		||||
      fi
 | 
			
		||||
   ;;
 | 
			
		||||
esac
 | 
			
		||||
							
								
								
									
										27
									
								
								cdist/test/autil/fixtures/explorer/machine
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										27
									
								
								cdist/test/autil/fixtures/explorer/machine
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2010-2011 Andi Brönnimann (andi-cdist at v-net.ch)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# All os variables are lower case
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
if command -v uname 2>&1 >/dev/null; then
 | 
			
		||||
   uname -m
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										66
									
								
								cdist/test/autil/fixtures/explorer/machine_type
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										66
									
								
								cdist/test/autil/fixtures/explorer/machine_type
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,66 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2014 Daniel Heule  (hda at sfs.biz)
 | 
			
		||||
# 2014 Thomas Oettli (otho at sfs.biz)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# FIXME: other system types (not linux ...)
 | 
			
		||||
 | 
			
		||||
if [ -d "/proc/vz" -a ! -d "/proc/bc" ]; then
 | 
			
		||||
    echo openvz
 | 
			
		||||
    exit
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -e "/proc/1/environ" ] &&
 | 
			
		||||
    cat "/proc/1/environ" | tr '\000' '\n' | grep -Eiq '^container='; then
 | 
			
		||||
    echo lxc
 | 
			
		||||
    exit
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -r /proc/cpuinfo ]; then
 | 
			
		||||
    # this should only exist on virtual guest machines,
 | 
			
		||||
    # tested on vmware, xen, kvm
 | 
			
		||||
    if grep -q "hypervisor" /proc/cpuinfo; then
 | 
			
		||||
        # this file is aviable in xen guest systems
 | 
			
		||||
        if [ -r /sys/hypervisor/type ]; then
 | 
			
		||||
            if grep -q -i "xen" /sys/hypervisor/type; then
 | 
			
		||||
                echo virtual_by_xen
 | 
			
		||||
                exit 
 | 
			
		||||
            fi
 | 
			
		||||
        else
 | 
			
		||||
            if [ -r /sys/class/dmi/id/product_name ]; then
 | 
			
		||||
                if grep -q -i 'vmware' /sys/class/dmi/id/product_name; then
 | 
			
		||||
                    echo "virtual_by_vmware"
 | 
			
		||||
                    exit
 | 
			
		||||
                elif grep -q -i 'bochs' /sys/class/dmi/id/product_name; then
 | 
			
		||||
                    echo "virtual_by_kvm"
 | 
			
		||||
                    exit 
 | 
			
		||||
                elif grep -q -i 'virtualbox' /sys/class/dmi/id/product_name; then
 | 
			
		||||
                    echo "virtual_by_virtualbox"
 | 
			
		||||
                    exit 
 | 
			
		||||
                fi
 | 
			
		||||
            fi
 | 
			
		||||
        fi
 | 
			
		||||
        echo "virtual_by_unknown"
 | 
			
		||||
    else
 | 
			
		||||
        echo "physical"
 | 
			
		||||
    fi
 | 
			
		||||
else
 | 
			
		||||
    echo "unknown"
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										36
									
								
								cdist/test/autil/fixtures/explorer/memory
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										36
									
								
								cdist/test/autil/fixtures/explorer/memory
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,36 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2014 Daniel Heule  (hda at sfs.biz)
 | 
			
		||||
# 2014 Thomas Oettli (otho at sfs.biz)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# FIXME: other system types (not linux ...)
 | 
			
		||||
 | 
			
		||||
os=$("$__explorer/os")
 | 
			
		||||
case "$os" in
 | 
			
		||||
    "macosx")
 | 
			
		||||
        echo "$(sysctl -n hw.memsize)/1024" | bc
 | 
			
		||||
    ;;
 | 
			
		||||
 | 
			
		||||
    *)
 | 
			
		||||
    if [ -r /proc/meminfo ]; then
 | 
			
		||||
        grep "MemTotal:" /proc/meminfo | awk '{print $2}'
 | 
			
		||||
    fi
 | 
			
		||||
    ;;
 | 
			
		||||
esac
 | 
			
		||||
							
								
								
									
										143
									
								
								cdist/test/autil/fixtures/explorer/os
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										143
									
								
								cdist/test/autil/fixtures/explorer/os
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,143 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# All os variables are lower case.  Keep this file in alphabetical
 | 
			
		||||
# order by os variable except in cases where order otherwise matters,
 | 
			
		||||
# in which case keep the primary os and its derivatives together in
 | 
			
		||||
# a block (see Debian and Redhat examples below).
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
if grep -q ^Amazon /etc/system-release 2>/dev/null; then
 | 
			
		||||
   echo amazon
 | 
			
		||||
   exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -f /etc/arch-release ]; then
 | 
			
		||||
   echo archlinux
 | 
			
		||||
   exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -f /etc/cdist-preos ]; then
 | 
			
		||||
   echo cdist-preos
 | 
			
		||||
   exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -d /gnu/store ]; then
 | 
			
		||||
   echo guixsd
 | 
			
		||||
   exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
### Debian and derivatives
 | 
			
		||||
if grep -q ^DISTRIB_ID=Ubuntu /etc/lsb-release 2>/dev/null; then
 | 
			
		||||
   echo ubuntu
 | 
			
		||||
   exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -f /etc/debian_version ]; then
 | 
			
		||||
   echo debian
 | 
			
		||||
   exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -f /etc/devuan_version ]; then
 | 
			
		||||
   echo devuan
 | 
			
		||||
   exit 0
 | 
			
		||||
fi
 | 
			
		||||
###
 | 
			
		||||
 | 
			
		||||
if [ -f /etc/gentoo-release ]; then
 | 
			
		||||
   echo gentoo
 | 
			
		||||
   exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -f /etc/openwrt_version ]; then
 | 
			
		||||
    echo openwrt
 | 
			
		||||
    exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -f /etc/owl-release ]; then
 | 
			
		||||
   echo owl
 | 
			
		||||
   exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
### Redhat and derivatives
 | 
			
		||||
if grep -q ^Scientific /etc/redhat-release 2>/dev/null; then
 | 
			
		||||
    echo scientific
 | 
			
		||||
    exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if grep -q ^CentOS /etc/redhat-release 2>/dev/null; then
 | 
			
		||||
    echo centos
 | 
			
		||||
    exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if grep -q ^Fedora /etc/redhat-release 2>/dev/null; then
 | 
			
		||||
   echo fedora
 | 
			
		||||
   exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if grep -q ^Mitel /etc/redhat-release 2>/dev/null; then
 | 
			
		||||
   echo mitel
 | 
			
		||||
   exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -f /etc/redhat-release ]; then
 | 
			
		||||
   echo redhat
 | 
			
		||||
   exit 0
 | 
			
		||||
fi
 | 
			
		||||
###
 | 
			
		||||
 | 
			
		||||
if [ -f /etc/SuSE-release ]; then
 | 
			
		||||
   echo suse
 | 
			
		||||
   exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -f /etc/slackware-version ]; then
 | 
			
		||||
   echo slackware
 | 
			
		||||
   exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
uname_s="$(uname -s)"
 | 
			
		||||
 | 
			
		||||
# Assume there is no tr on the client -> do lower case ourselves
 | 
			
		||||
case "$uname_s" in
 | 
			
		||||
   Darwin)
 | 
			
		||||
      echo macosx
 | 
			
		||||
      exit 0
 | 
			
		||||
   ;;
 | 
			
		||||
   NetBSD)
 | 
			
		||||
      echo netbsd
 | 
			
		||||
      exit 0
 | 
			
		||||
   ;;
 | 
			
		||||
   FreeBSD)
 | 
			
		||||
      echo freebsd
 | 
			
		||||
      exit 0
 | 
			
		||||
   ;;
 | 
			
		||||
   OpenBSD)
 | 
			
		||||
      echo openbsd
 | 
			
		||||
      exit 0
 | 
			
		||||
   ;;
 | 
			
		||||
   SunOS)
 | 
			
		||||
      echo solaris
 | 
			
		||||
      exit 0
 | 
			
		||||
   ;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
echo "Unknown OS" >&2
 | 
			
		||||
exit 1
 | 
			
		||||
							
								
								
									
										73
									
								
								cdist/test/autil/fixtures/explorer/os_version
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										73
									
								
								cdist/test/autil/fixtures/explorer/os_version
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,73 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# All os variables are lower case
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
case "$($__explorer/os)" in
 | 
			
		||||
   amazon)
 | 
			
		||||
      cat /etc/system-release
 | 
			
		||||
   ;;
 | 
			
		||||
   archlinux)
 | 
			
		||||
      # empty, but well...
 | 
			
		||||
      cat /etc/arch-release
 | 
			
		||||
   ;;
 | 
			
		||||
   debian)
 | 
			
		||||
      cat /etc/debian_version
 | 
			
		||||
   ;;
 | 
			
		||||
   devuan)
 | 
			
		||||
      cat /etc/devuan_version
 | 
			
		||||
   ;;
 | 
			
		||||
   fedora)
 | 
			
		||||
      cat /etc/fedora-release
 | 
			
		||||
   ;;
 | 
			
		||||
   gentoo)
 | 
			
		||||
      cat /etc/gentoo-release
 | 
			
		||||
   ;;
 | 
			
		||||
   macosx)
 | 
			
		||||
      sw_vers -productVersion
 | 
			
		||||
   ;;
 | 
			
		||||
   *bsd|solaris)
 | 
			
		||||
      uname -r
 | 
			
		||||
   ;;
 | 
			
		||||
   openwrt)
 | 
			
		||||
      cat /etc/openwrt_version
 | 
			
		||||
   ;;
 | 
			
		||||
   owl)
 | 
			
		||||
      cat /etc/owl-release
 | 
			
		||||
   ;;
 | 
			
		||||
   redhat|centos|mitel|scientific)
 | 
			
		||||
      cat /etc/redhat-release
 | 
			
		||||
   ;;
 | 
			
		||||
   slackware)
 | 
			
		||||
      cat /etc/slackware-version
 | 
			
		||||
   ;;
 | 
			
		||||
   suse)
 | 
			
		||||
      if [ -f /etc/os-release ]; then
 | 
			
		||||
        cat /etc/os-release
 | 
			
		||||
      else
 | 
			
		||||
        cat /etc/SuSE-release
 | 
			
		||||
      fi
 | 
			
		||||
   ;;
 | 
			
		||||
   ubuntu)
 | 
			
		||||
      lsb_release -sr
 | 
			
		||||
   ;;
 | 
			
		||||
esac
 | 
			
		||||
							
								
								
									
										26
									
								
								cdist/test/autil/fixtures/explorer/runlevel
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										26
									
								
								cdist/test/autil/fixtures/explorer/runlevel
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2012 Nico Schottelius (nico-cdist at schottelius.org)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
set +e
 | 
			
		||||
executable=$(command -v runlevel)
 | 
			
		||||
if [ -x "$executable" ]; then
 | 
			
		||||
   "$executable" | awk '{ print $2 }'
 | 
			
		||||
fi
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue