This file is indexed.

/usr/bin/oarsh is in oar-common 2.5.4-2+deb8u1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/bin/bash
# $Id$

# OARSH and SSH hosts REGEXs
OARSH_HOSTS_INCLUDE_FILE=~/.oarsh-hosts-include
OARSH_HOSTS_EXCLUDE_FILE=~/.oarsh-hosts-exclude
# SSH command location
SSHCMD=/usr/bin/ssh
# OAR variables
OARDIR=/usr/lib/oar
OARSHCMD=oarsh_oardo
DEBUGFILE=

# unset bash glob expension 
set -f

# Parse SSH options (must be called twice, see below parse_args)
# Be carefull: watch openssh ssh.c source file for new options...
parse_opts() {
	OPTIND=
	while getopts "1246ab:c:e:fgi:kl:m:no:p:qstvxACD:F:I:L:MNO:PR:S:TVw:XY" OPT; do
		case $OPT in
			1 | 2 | 4 | 6 | n | f | x | X | Y | g | P | a | A | k | t | v | V | q | M | s | T | N | C )
				SSHARGS_OPT[SSHARGS_OPTCOUNT]=$OPT
				SSHARGS_OPTARG[$((SSHARGS_OPTCOUNT++))]=""
				;;
			O | i | I | w | e | c | m | p | l | L | R | D | o | S | b | F )
				SSHARGS_OPT[$SSHARGS_OPTCOUNT]=$OPT
				SSHARGS_OPTARG[$((SSHARGS_OPTCOUNT++))]=$OPTARG
				;;
			* ) 
				SSHARGS_ERROR=255
				;;
		esac
	done
}

# Parse the SSH command args
# Syntax is `ssh [opts] [user@]<host> [opts] [command]'
parse_args() {
	unset SSHARGS_OPT
        unset SSHARGS_OPTARG
	SSHARGS_ERROR=0
	SSHARGS_OPTCOUNT=0
	parse_opts "$@"
	shift $((OPTIND-1))
	SSHARGS_HOST="${1/#*@/}"
	[ -n "$SSHARGS_HOST" ] || SSHARGS_ERROR=255
	SSHARGS_USER="${1/%$SSHARGS_HOST/}"
	SSHARGS_USER="${SSHARGS_USER/%@/}"
	shift 1
	parse_opts "$@"
	shift $((OPTIND-1))
	SSHARGS_COMMAND="$@"
}

# Debug function: dump parsed information
dump() {
       for i in $(seq 0 $((SSHARGS_OPTCOUNT - 1))); do
		echo "SSHARGS_OPT[$i]="${SSHARGS_OPT[$i]} >> $DEBUGFILE
		echo "SSHARGS_OPTARG[$i]="${SSHARGS_OPTARG[$i]} >> $DEBUGFILE
	done
        cat >> $DEBUGFILE <<EOF
SSHARGS_OPTCOUNT=$SSHARGS_OPTCOUNT
SSHARGS_HOST=$SSHARGS_HOST
SSHARGS_USER=$SSHARGS_USER
SSHARGS_COMMAND=$SSHARGS_COMMAND
SSHARGS_ERROR=$SSHARGS_ERROR
EOF
}

# Check whether SSH or OARSH must be run depending on the hostname.
# First check if host is in the include list, if yes run OARSH.
# Else check if host is in the exclude list, if yes run SSH.
# Else run OARSH.
is_do_ssh_host() {
	if [ -n "$SSHARGS_ERROR" -a $SSHARGS_ERROR -eq 0 -a -n "$SSHARGS_HOST" ]; then
		if [ -r $OARSH_HOSTS_INCLUDE_FILE ]; then
			for h in $(< $OARSH_HOSTS_INCLUDE_FILE); do
				if [[ $SSHARGS_HOST =~ $h ]]; then
					return 1
				fi
			done
		fi
		if [ -r $OARSH_HOSTS_EXCLUDE_FILE ]; then
			for h in $(< $OARSH_HOSTS_EXCLUDE_FILE); do
				if [[ $SSHARGS_HOST =~ $h ]]; then
					return 0
				fi
			done
		fi
		return 1
	fi
	return 0
}

# Remove the -l ssh option for calls of OARSH.
fix_opts() {
        unset OPTS
	OPTCOUNT=0
        let j=0
        for i in $(seq 0 $((SSHARGS_OPTCOUNT - 1))); do
		if [[ ${SSHARGS_OPT[$i]} =~ ^l ]]; then
			:
                elif [[ ${SSHARGS_OPT[$i]} =~ ^i ]]; then
			export OAR_JOB_KEY_FILE=${SSHARGS_OPTARG[$i]}
		else

                        if [ -z "${SSHARGS_OPTARG[$i]}" ]; then
			        OPTS[$((OPTCOUNT++))]="-${SSHARGS_OPT[$i]}"
                        else
			        OPTS[$((OPTCOUNT++))]="-${SSHARGS_OPT[$i]}${SSHARGS_OPTARG[$i]}"
                        fi
		fi
	done
}

# Main program

# Parse args (the $@ var of the main program stays unchanged)
parse_args "$@"
# check if SSH or OARSH must be called depending on the host
if is_do_ssh_host; then
	exec $SSHCMD "$@"
fi

# Remove the -l option and fix -i key options
fix_opts

# Debug if DEBUGFILE is DEFINED
if [ -n "$DEBUGFILE" ]; then
 echo "$@" > $DEBUGFILE
 dump
 echo "${OPTS[@]}" >> $DEBUGFILE
fi

# Sudowrapper mechanism to call oarsh
exec $OARDIR/$OARSHCMD "${OPTS[@]}" $SSHARGS_HOST "$SSHARGS_COMMAND"
echo "OARSH wrapper failed." 1>&2
exit 1