#!/bin/sh # # 2016 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 . # # This explorer returns script code string for running a command with su # or sudo, whichever it founds. If searches the command in the order of # first su and then sudo if su is not found. # If no su nor sudo is found then it returns string script code to run # bare command. # It uses two arguments, first user and the second command to run. # If the result string is assigned to foo it can be used in code # generation as: # echo "$foo user command" # sudo_func() { which sudo > /dev/null 2>&1 if [ $? -eq 0 ] then func='f() { sudo -H -u $1 $2; }' retval=0 else func='' retval=1 fi return $retval } su_func() { which su > /dev/null 2>&1 if [ $? -eq 0 ] then func='f() { su -c "$2" $1 ; }' retval=0 else func='' retval=1 fi return $retval } # first check su su_func if [ $? -ne 0 ] then # if no su then check sudo sudo_func if [ $? -ne 0 ] then # if no su nor sudo then run bare command func='f() { $2 ; }' fi fi echo "eval '${func}' ; f "