Commands needed: conf/cmd/remote_exec conf/cmd/copy If ! conf/cmd/remote_exec: use builtin If ! conf/cmd/copy: use builtin -------------------------------------------------------------------------------- --cmd-dir? $__cdist_cmd_dir -------------------------------------------------------------------------------- -> Depend on session! Builtin: cdist.exec.run_or_fail(["scp", "-qr", source, self.remote_user + "@" + self.target_host + ":" + destination]) self.remote_prefix = ["ssh", self.remote_user + "@" + self.target_host] self.remote_user = remote_user self.remote_prefix = remote_prefix -------------------------------------------------------------------------------- What is in a session? base_dir target_host -------------------------------------------------------------------------------- remote_user pseudo-static, can be hardcoded again -------------------------------------------------------------------------------- Result: os.environ['__remote_exec'] = ["ssh", "-l", "root" ] os.environ['__remote_exec'] = ["ssh", "-o", "User=root" ] os.environ['__remote_copy'] = ["scp", "-o", "User=root" ] __remote_exec=~/sudossh __remote_copy=... cdist config localhost ~/sudossh hostname $@... ~/sudocopy a hostname:b ~/chrootssh ~/chrootcopy a) 3 cmd verzeichnnise: cdist, sudo, chroot pro aufruf variable ändern b) 1 dir, mit zeug pro aufruf variablen ändern conf/cmd/remote_exec args for __remote_exec $1 = hostname $2 - ... = stuff to be executed in /bin/sh on remote side $2 - $7 = env $7 - 12 = cmd args for __remote_copy $1 = file here $2 = hostname:destination -------------------------------------------------------------------------------- There needs to be an easy way to change those cmds! -------------------------------------------------------------------------------- Env-Passing: _a=b test -> test can access $_a _a=b test $_a -> $1 = "", because _a is *not* set within the shell _a=b; test -> can access $_a _a=b; test $_a -> $1 == "b"