diff options
author | Martin Schwenke <martin@meltin.net> | 2014-06-24 11:36:14 +1000 |
---|---|---|
committer | Martin Schwenke <martin@meltin.net> | 2014-07-02 14:17:17 +1000 |
commit | 8e389a281eb50ab4e552a1dea3546a6f2ea7bfdf (patch) | |
tree | 62c459758a1f5586f42fe1ab961ddba737e2322f | |
parent | 5828c885f007c8c73f9ff3fba48d9d1d8104eef2 (diff) | |
download | autocluster-8e389a281eb50ab4e552a1dea3546a6f2ea7bfdf.tar.gz autocluster-8e389a281eb50ab4e552a1dea3546a6f2ea7bfdf.tar.xz autocluster-8e389a281eb50ab4e552a1dea3546a6f2ea7bfdf.zip |
Remove "sofs" command on nodes
"onnode -P" implements the only useful feature.
Signed-off-by: Martin Schwenke <martin@meltin.net>
-rwxr-xr-x | base/all/usr/bin/sofs | 613 |
1 files changed, 0 insertions, 613 deletions
diff --git a/base/all/usr/bin/sofs b/base/all/usr/bin/sofs deleted file mode 100755 index fa85e45..0000000 --- a/base/all/usr/bin/sofs +++ /dev/null @@ -1,613 +0,0 @@ -#!/bin/bash -# simple SoFS command line config script -# -# Copyright (C) Andrew Tridgell 2008 - -# catch errors -set -e -set -E -trap 'es=$?; - echo ERROR: failed in function \"${FUNCNAME}\" at line ${LINENO} of ${BASH_SOURCE[0]} with code $es; - exit $es' ERR - -# fail on any element of a pipe failing -set -o pipefail - -optionstext=' - options: - -x enable script debugging - -f force potentially dangerous operations - -e EDITOR select editor - -d LEVEL choose net debug level -' - -#################### -# show program usage -usage() -{ - cat <<EOF -Usage: sofs [OPTION] ... <COMMAND> -$optionstext - commands: - conf COMMAND - configuration commands - status - show status - push FILE - push a local file to all nodes - - Use subcommand 'help' for information on a command -EOF - exit 1 -} - - -#################### -# show conf * usage -sofs_conf_usage() -{ - cat <<EOF -Usage: sofs conf [OPTION] ... <COMMAND> -$optionstext - - commands: - conf list - show all config options - - conf show OPTION - show a single config option - - conf remove OPTION - remove a config option - - conf set OPTION VALUE - set a config option - - conf load OPTION FILE - set a config option from a file - - conf edit OPTION - edit a config option with an external editor - - conf backup FILE - backup whole configuration to a file - - conf restore FILE - restore whole configuration from a file - - conf init - initialise config parms - - conf reload <NODES> - reload config on the specifed nodes (all nodes by default) -EOF - exit 1 -} - -###################################### -# run an onnode - using -p if possible -run_onnode() { - nodes="$1" - shift - if grep parallel /usr/bin/onnode > /dev/null; then - onnode -qp "$nodes" "$@" - else - onnode "$nodes" "$@" 2> /dev/null - fi -} - -############################## -# pull samba share from option -samba_share() { - echo "$1" | cut -d/ -f2 -} - -############################## -# pull samba option from option -samba_option() { - echo "$1" | cut -d/ -f3 -} - -############################# -# work out the type of option -option_type() { - case $1 in - smbconf) - echo "samba"; - ;; - smbconf/*/*) - echo "sambaoption" - ;; - smbconf/*) - echo "sambashare" - ;; - /*) - echo "file" - ;; - *) - echo "sofs" - ;; - esac -} - -############################ -# list main config options -sofs_conf_list() { - net -d$netdebug registry enumerate 'HKLM\Software\IBM\SoFS' | egrep '^Valuename..=' | cut -c14- | - while IFS= read n; do - echo "[$n]" - sofs_conf_show "$n" | sed -e "s@^@ @" - echo - done - net -d$netdebug registry enumerate 'HKLM\Software\Samba\smbconf' | egrep '^Keyname' | cut -c13- | - while IFS= read n; do - echo "[smbconf/$n]" - net -d$netdebug conf showshare "$n" | grep -v '^\[' || true - echo - done -} - - -############################ -# list a config file -sofs_conf_listfile() { - filename="$1" - echo - echo "[$filename]" - if [ -f "$filename" ]; then - cat "$filename" | sed -e "s@^@ @" - fi -} - -############################################## -# list a config file that varies between nodes -sofs_conf_listfile_nodes() { - filename="$1" - onnode all "echo; echo \"[$filename:\$HOSTNAME]\"; [ -f \"$filename\" ] && cat \"$filename\" | sed -e 's@^@ @'" 2> /dev/null -} - - -############################ -# list all options and files -sofs_conf_listall() { - sofs_conf_list - sofs_conf_listfile_nodes "/etc/ctdb/public_addresses" - sofs_conf_listfile_nodes "/etc/ntp.conf" - sofs_conf_listfile "/etc/krb5.conf" - sofs_conf_listfile "/etc/samba/smb.conf" - sofs_conf_listfile "/etc/hosts" - sofs_conf_listfile "/etc/resolv.conf" - sofs_conf_listfile "/etc/sysconfig/authconfig" - sofs_conf_listfile "/etc/sysconfig/ctdb" - sofs_conf_listfile "/etc/sysconfig/vsftpd" - sofs_conf_listfile "/etc/sysconfig/http" - sofs_conf_listfile "/etc/sysconfig/nfs" - sofs_conf_listfile "/etc/nsswitch.conf" - sofs_conf_listfile "/etc/pam.d/system-auth-ac" - sofs_conf_listfile "/etc/pam.d/vsftpd" - sofs_conf_listfile "/etc/rssh.conf" - sofs_conf_listfile "/etc/httpd/conf.d/shares.config" - sofs_conf_listfile "/etc/vsftpd/vsftpd.conf" - sofs_conf_listfile "/var/opt/IBM/sofs/configs/scpexports" - sofs_conf_listfile "/var/opt/IBM/sofs/configs/ftpexports" - sofs_conf_listfile "/var/opt/IBM/sofs/scproot/etc/nsswitch.conf" -} - -############################ -# backup config options -sofs_conf_backup() { - ( - cat <<EOF -# SoFS configuration backup -# Date: `date` -# Host: `hostname` -EOF - sofs_conf_listall - ) > "$1" -} - -############################ -# show one config option -sofs_conf_show() {( - option="$1" - case `option_type $option` in - samba) - net -d$netdebug conf list - ;; - sambaoption) - net -d$netdebug conf getparm "`samba_share \"$option\"`" "`samba_option \"$option\"`" - ;; - sambashare) - net -d$netdebug conf showshare "`samba_share \"$option\"`" | egrep '^[ ]' - ;; - sofs) - net -d$netdebug registry getvalueraw 'HKLM\Software\IBM\SoFS' "$option" - ;; - file) - cat "$option" - ;; - esac -)} - -############################ -# set a config option -sofs_conf_set() {( - option="$1" - value="$2" - case `option_type $option` in - sambaoption) - net -d$netdebug conf setparm "`samba_share \"$option\"`" "`samba_option \"$option\"`" "$value" - ;; - - samba) - tmpfile=`mktemp -p /tmp sofs.XXXXXX` - echo "$value" > $tmpfile - if testparm -s $tmpfile 2>&1 | egrep '^WARNING|^ERROR|^Unknown'; then - echo "Bad config options - not setting" - rm -f $tmpfile - exit 1 - fi - net -d$netdebug conf import $tmpfile || { - rm -f $tmpfile - echo "ERROR: Failed to import smbconf" - exit 1 - } - rm -f $tmpfile - ;; - - sambashare) - tmpfile=`mktemp -p /tmp sofs.XXXXXX` - share="`samba_share \"$option\"`" - echo "[$share]" >> $tmpfile - echo "$value" >> $tmpfile - if testparm -s $tmpfile 2>&1 | egrep '^WARNING|^ERROR|^Unknown'; then - echo "Bad config options - not setting" - rm -f $tmpfile - exit 1 - fi - net -d$netdebug conf import $tmpfile $share || { - rm -f $tmpfile - echo "ERROR: Failed to import share $share" - exit 1 - } - rm -f $tmpfile - ;; - - sofs) - net -d$netdebug registry setvalue 'HKLM\Software\IBM\SoFS' "$option" "SZ" "$value" || { - rm -f $tmpfile - echo "ERROR: Failed to set registry value $option" - exit 1 - } - - ;; - - file) - case "$option" in - *:*) - d=`dirname "$option"` - run_onnode all "mkdir -p \"$d\"" - host=`echo "$option" | cut -d: -f2` - opt=`echo "$option" | cut -d: -f1` - tmpfile=`mktemp -p /tmp sofs.XXXXXX` - echo "$value" > "$tmpfile" - rsync $tmpfile $host:$opt - rm -f $tmpfile - ;; - *) - d=`dirname "$option"` - mkdir -p "$d" - echo "$value" > "$option" - - run_onnode all "mkdir -p \"$d\"; rsync $HOSTNAME:\"$option\" \"$option\" 2> /dev/null" - ;; - esac - ;; - - esac -)} - -############################ -# remove a config option -sofs_conf_remove() {( - option="$1" - case `option_type $option` in - samba) - echo "To remove entire Samba config please use 'net conf drop'" - ;; - - sambaoption) - net -d$netdebug conf delparm "`samba_share \"$option\"`" "`samba_option \"$option\"`" - ;; - - sambashare) - net -d$netdebug conf delshare "`samba_share \"$option\"`" - ;; - - sofs) - net -d$netdebug registry deletevalue 'HKLM\Software\IBM\SoFS' "$option" - ;; - - file) - rm -f "$option" - ;; - esac -)} - - -############################ -# load a config option from a file -sofs_conf_load() {( - option="$1" - file="$2" - sofs_conf_set "$option" "`cat $file`" -)} - -############################ -# edit a config option -sofs_conf_edit() {( - option="$1" - editor="" - [ "$editor" = "" ] && editor="$EDITOR" - [ "$editor" = "" ] && editor="$VISUAL" - [ "$editor" = "" ] && editor="vi" - tmpfile=`mktemp -p /tmp sofs.XXXXXX` - sofs_conf_show "$option" > $tmpfile || true - sum1=`md5sum $tmpfile` - $editor $tmpfile - sum2=`md5sum $tmpfile` - if [ "$sum1" = "$sum2" ]; then - echo "$option unchanged" - else - sofs_conf_load "$option" "$tmpfile" - echo "$option changed" - fi - rm -f $tmpfile -)} - - -############################ -# restore all config options -sofs_conf_restore() {( - sofs_conf_init - filename="$1" - tmpfile=`mktemp -p /tmp sofs.XXXXXX` - option="" - while IFS= read line; do - case "$line" in - \#*) - ;; - [*) - [ "$option" = "" ] || { - echo "Loading option $option" - sofs_conf_load "$option" "$tmpfile" - } - option=`echo "$line" | cut -d'[' -f2 | cut -d']' -f1` - /bin/cp /dev/null $tmpfile - ;; - *) - echo "$line" | sed -e "s@^ @@" >> $tmpfile - ;; - esac - done < "$filename" - [ "$option" = "" ] || { - echo "Loading option $option" - sofs_conf_load "$option" "$tmpfile" - } - rm -f $tmpfile - - # now the tricky bit - delete any options that were not - # set in the backup - sofs_conf_listall | grep '^\[' | cut -d'[' -f2 | cut -d']' -f1 | sort -u > $tmpfile.1 - cat "$filename" | grep '^\[' | cut -d'[' -f2 | cut -d']' -f1 | sort -u > $tmpfile.2 - comm -23 $tmpfile.1 $tmpfile.2 | - while IFS= read line; do - if [ "$force" = "1" ]; then - sofs_conf_remove "$line" || true - echo "Removed option $line" - else - echo "force not set: Not removing option $line" - fi - done - rm -f $tmpfile.1 $tmpfile.2 -)} - - -############################ -# initialise registry config -sofs_conf_init() { - net -d$netdebug registry createkey 'HKLM' > /dev/null - net -d$netdebug registry createkey 'HKLM\Software' > /dev/null - net -d$netdebug registry createkey 'HKLM\Software\IBM' > /dev/null - net -d$netdebug registry createkey 'HKLM\Software\IBM\SoFS' > /dev/null - net -d$netdebug registry createkey 'HKLM\Software\Samba' > /dev/null - net -d$netdebug registry createkey 'HKLM\Software\Samba\smbconf' > /dev/null - net -d$netdebug registry createkey 'HKLM\Software\Samba\global' > /dev/null -} - -############### -# reload config -sofs_conf_reload() { - ctdb -n "$1" eventscript reload -} - -############### -# show status usage -sofs_status_usage() { - cat <<EOF -Usage: sofs status - - Shows cluster status and public IP assignment -EOF - exit 1 -} - - -############### -# show status -sofs_status() { - ctdb status - ctdb ip -n all - mmgetstate -a -} - - -############### -# show push usage -sofs_push_usage() { - cat <<EOF -Usage: sofs push FILES - - Pushes some files from the current node to all nodes -EOF - exit 1 -} - - -############### -# push files -sofs_push() { - for f in $*; do - echo "Pushing $f" - if [ "${f:0:1}" = "/" ]; then - run_onnode all rsync $HOSTNAME:$f $f - else - run_onnode all rsync $HOSTNAME:$PWD/$f $PWD/$f - fi - done -} - - -############################ -# list all shares -sofs_shares() { - (sofs_conf_show ftpexports | cut -d= -f1 ; - sofs_conf_show httpexports | egrep '^RewriteRule' | cut -d/ -f2 | cut -d\( -f1; - sofs_conf_show nfssharenames | egrep '^/' | cut -d= -f2 ; - sofs_conf_show scpexports | cut -d= -f1 ; - net -d$netdebug conf listshares | egrep -v '^global$' ) | sort -u -} - - -############################ -# parse command line options - -netdebug=0 - -temp=$(getopt -n "$prog" -o "xhe:d:f" -l help -- "$@") - -[ $? != 0 ] && usage - -eval set -- "$temp" - -while true ; do - case "$1" in - -x) set -x; shift ;; - -f) force=1; shift ;; - -e) EDITOR="$2"; shift; shift ;; - -d) netdebug="$2"; shift; shift ;; - --) shift ; break ;; - -h|--help|*) usage ;; # Shouldn't happen, so this is reasonable. - esac -done - -[ $# -lt 1 ] && usage - -command="$1" -shift - -case $command in - conf) - [ $# -lt 1 ] && sofs_conf_usage - type="$1" - shift - case $type in - list) - [ $# != 0 ] && sofs_conf_usage - sofs_conf_list - ;; - - listall) - [ $# != 0 ] && sofs_conf_usage - sofs_conf_listall - ;; - - show) - [ $# != 1 ] && sofs_conf_usage - sofs_conf_show "$1" - ;; - - remove) - [ $# != 1 ] && sofs_conf_usage - sofs_conf_remove "$1" - ;; - - set) - [ $# != 2 ] && sofs_conf_usage - sofs_conf_set "$1" "$2" - ;; - - load) - [ $# != 2 ] && sofs_conf_usage - sofs_conf_load "$1" "$2" - ;; - - edit) - [ $# != 1 ] && sofs_conf_usage - sofs_conf_edit "$1" - ;; - - init) - [ $# != 0 ] && sofs_conf_usage - sofs_conf_init - echo "Config initialised" - ;; - - backup) - [ $# != 1 ] && sofs_conf_usage - sofs_conf_backup "$1" - echo "Config backed up to $1" - ;; - - restore) - [ $# != 1 ] && sofs_conf_usage - sofs_conf_restore "$1" - echo "Config restored from $1" - ;; - - reload) - if [ $# = 0 ]; then - sofs_conf_reload "all" - else - sofs_conf_reload "$1" - fi - ;; - - *) - sofs_conf_usage - ;; - esac - ;; - - status) - [ $# != 0 ] && sofs_status_usage - sofs_status - ;; - - push) - [ $# -lt 1 ] && sofs_push_usage - sofs_push "$@" - ;; - - help) - if [ $# = 1 ]; then - sofs_$1_usage - else - usage; - fi - ;; - *) - usage; - ;; -esac - |