add ability to copy files from server to local machine
This commit is contained in:
parent
ee376ffaf7
commit
95de3d6372
23
boxctl.sh
23
boxctl.sh
@ -25,12 +25,16 @@ DRY=0
|
||||
MAINTENANCE=0
|
||||
SNAPSHOT=""
|
||||
FORCE=0
|
||||
COPY=0
|
||||
SSH_CTL_PATH="/tmp/boxctl-%r@%h:%p"
|
||||
SSH_OPTS="-o ControlMaster=auto -o ControlPersist=60s -o ControlPath=${SSH_CTL_PATH}"
|
||||
RSYNC_OPTS="--rsync-path=/usr/bin/openrsync -Dlrt"
|
||||
|
||||
while getopts "fh:mnu:sv" arg; do
|
||||
while getopts "cfh:mnu:sv" arg; do
|
||||
case $arg in
|
||||
c)
|
||||
COPY=1
|
||||
;;
|
||||
f)
|
||||
FORCE=1
|
||||
;;
|
||||
@ -216,6 +220,23 @@ fnc() {
|
||||
echo "${1} ${_count}"
|
||||
}
|
||||
|
||||
|
||||
if [ "${COPY}" == "1" ]; then
|
||||
if [ -f ./files ]; then
|
||||
msg 0 "syncing $(fnc files) from ${SERVER}"
|
||||
for file in $(cat files | grep -v ^#); do
|
||||
local _src _dest _mode _owner _group _dir
|
||||
read _src _owner _group _mode _dest <<EOF
|
||||
$(echo $file | sed 's/:/ /g')
|
||||
EOF
|
||||
_dir=$(dirname $_dest)
|
||||
msg 1 "\t${_dest} -> ${_src}"
|
||||
_rsync "${RUN_USER}@${SERVER}:$_dest" $_src
|
||||
done
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -f ./packages ]; then
|
||||
msg 0 "installing $(fnc packages)"
|
||||
cmd=$(printf "${PKG_DIFF_INSTALL}" $V $V)
|
||||
|
@ -24,7 +24,7 @@
|
||||
machines
|
||||
.Sh SYNOPSIS
|
||||
.Nm boxctl
|
||||
.Op Fl fmnsv
|
||||
.Op Fl cfmnsv
|
||||
.Op Fl h Ar host
|
||||
.Op Fl u Ar user
|
||||
.Sh DESCRIPTION
|
||||
@ -40,6 +40,8 @@ base.
|
||||
.Pp
|
||||
The options are as follows:
|
||||
.Bl -tag -width Ds
|
||||
.It Fl c
|
||||
Copy managed files from server into local directory.
|
||||
.It Fl h Ar host
|
||||
Remote host to be managed.
|
||||
.It Fl u Ar user
|
||||
|
84
smart_users.diff
Normal file
84
smart_users.diff
Normal file
@ -0,0 +1,84 @@
|
||||
diff --git a/boxctl.sh b/boxctl.sh
|
||||
index da15b17..5037112 100755
|
||||
--- a/boxctl.sh
|
||||
+++ b/boxctl.sh
|
||||
@@ -208,6 +208,35 @@ _ssh() {
|
||||
fi
|
||||
}
|
||||
|
||||
+if_optval() {
|
||||
+ local _a=$1 _b=$2 _c
|
||||
+
|
||||
+ if [ ! -z $3 ]; then
|
||||
+ _c=$3
|
||||
+ else
|
||||
+ _c=""
|
||||
+ fi
|
||||
+
|
||||
+ _a=${_a%%\"}
|
||||
+ _a=${_a##\"}
|
||||
+
|
||||
+ _b=${_b%%\"}
|
||||
+ _b=${_b##\"}
|
||||
+
|
||||
+ _c=${_c%%\"}
|
||||
+ _c=${_c##\"}
|
||||
+
|
||||
+ if [ "${_b}" != "" ]; then
|
||||
+ echo "${_a} ${_b}"
|
||||
+ else
|
||||
+ if [ "$_c" != "" ]; then
|
||||
+ echo "${_a} ${_c}"
|
||||
+ else
|
||||
+ echo ""
|
||||
+ fi
|
||||
+ fi
|
||||
+}
|
||||
+
|
||||
V=$(expand_v)
|
||||
|
||||
fnc() {
|
||||
@@ -239,20 +268,34 @@ fi
|
||||
if [ -f ./users ]; then
|
||||
msg 0 "adding $(fnc users)"
|
||||
for user in $(cat users | grep -v ^#); do
|
||||
- local _u _uid _gid _c _home _shell _pass
|
||||
- read _u _uid _gid _c _home _shell _pass <<EOF
|
||||
- $(echo $user | sed 's/:/ /g')
|
||||
+ local _u _uid _gid _groups _c _home _shell _pass
|
||||
+ read _u _uid _gid _groups _c _home _shell _pass <<EOF
|
||||
+ $(echo "${user}" | awk -F: \
|
||||
+ '{for(i = 1; i <= NF; i++) { printf "\"%s\" ", $i; }}')
|
||||
EOF
|
||||
msg 1 "\t${_u} (${_c})"
|
||||
_ssh ${RUN_USER}@${SERVER} "grep -q ^${_u} /etc/passwd || \
|
||||
/usr/sbin/useradd \
|
||||
- -s ${_shell} \
|
||||
- -c '${_c}' \
|
||||
- -d '${_home}' \
|
||||
+ $V \
|
||||
+ -m \
|
||||
+ $(if_optval "-s" "${_shell}" "/bin/ksh") \
|
||||
+ $(if_optval "-c" "${_c}" "") \
|
||||
+ $(if_optval "-d" "${_home}" "") \
|
||||
+ $(if_optval "-g" "${_gid}" "") \
|
||||
+ $(if_optval "-G" "${_groups}" "") \
|
||||
+ $(if_optval "-u" "${_uid}" "") \
|
||||
+ $(if_optval "-p" "${_pass}" "") \
|
||||
+ ${_u} && \
|
||||
+ /usr/sbin/usermod \
|
||||
+ $V \
|
||||
-m \
|
||||
- -g ${_gid} \
|
||||
- -u ${_uid} \
|
||||
- -p ${_pass} \
|
||||
+ $(if_optval "-s" "${_shell}" "/bin/ksh") \
|
||||
+ $(if_optval "-c" "${_c}" "") \
|
||||
+ $(if_optval "-d" "${_home}" "") \
|
||||
+ $(if_optval "-g" "${_gid}" "") \
|
||||
+ $(if_optval "-G" "${_groups}" "") \
|
||||
+ $(if_optval "-u" "${_uid}" "") \
|
||||
+ $(if_optval "-p" "${_pass}" "") \
|
||||
${_u}"
|
||||
done
|
||||
fi
|
Loading…
Reference in New Issue
Block a user