403Webshell
Server IP : 103.119.228.120  /  Your IP : 3.16.51.237
Web Server : Apache
System : Linux v8.techscape8.com 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64
User : nobody ( 99)
PHP Version : 5.6.40
Disable Function : shell_exec,symlink,system,exec,proc_get_status,proc_nice,proc_terminate,define_syslog_variables,syslog,openlog,closelog,escapeshellcmd,passthru,ocinum cols,ini_alter,leak,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dl,dll,myshellexec,proc_open,socket_bind,proc_close,escapeshellarg,parse_ini_filepopen,fpassthru,exec,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice,proc_terminate,proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,dl,symlink,shell_exec,system,dl,passthru,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,fpassthru,getdisfunc,fx29exec,fx29exec2,is_windows,disp_freespace,fx29sh_getupdate,fx29_buff_prepare,fx29_sess_put,fx29shexit,fx29fsearch,fx29ftpbrutecheck,fx29sh_tools,fx29sh_about,milw0rm,imagez,sh_name,myshellexec,checkproxyhost,dosyayicek,c99_buff_prepare,c99_sess_put,c99getsource,c99sh_getupdate,c99fsearch,c99shexit,view_perms,posix_getpwuid,posix_getgrgid,posix_kill,parse_perms,parsesort,view_perms_color,set_encoder_input,ls_setcheckboxall,ls_reverse_all,rsg_read,rsg_glob,selfURL,dispsecinfo,unix2DosTime,addFile,system,get_users,view_size,DirFiles,DirFilesWide,DirPrintHTMLHeaders,GetFilesTotal,GetTitles,GetTimeTotal,GetMatchesCount,GetFileMatchesCount,GetResultFiles,fs_copy_dir,fs_copy_obj,fs_move_dir,fs_move_obj,fs_rmdir,SearchText,getmicrotime
MySQL : ON |  cURL : ON |  WGET : ON |  Perl : ON |  Python : ON |  Sudo : ON |  Pkexec : ON
Directory :  /bin/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /bin/os-prober
#!/bin/sh
set -e

# dash shell does not have "{varname}>&1" feature that bash shell has
# for auto-assignment of new filedescriptors.
# It is cumbersome to write the 'eval' to use our own variables in redirections.
# Therefore use fixed numbers.
export fd_result=3  # file descriptor for external results
export fd_logger=9  # file descriptor for input to logger

 . /usr/share/os-prober/common.sh

newns "$@"
require_tmpdir

log_output () {
	if type log-output >/dev/null 2>&1; then
		log-output -t os-prober --pass-stdout $@
	else
		$@
	fi
}

on_sataraid () {
	type dmraid >/dev/null 2>&1 || return 1
	local parent="${1%/*}"
	local device="/dev/${parent##*/}"
	if dmraid -r -c 2>/dev/null | grep -q "$device"; then
		return 0
	fi
	return 1
}

partitions () {
	# Exclude partitions that have whole_disk sysfs attribute set.
	if [ -d /sys/block ]; then
		# Exclude partitions on physical disks that are part of a
		# Serial ATA RAID disk.
		for part in /sys/block/*/*[0-9]; do
			if [ -f "$part/start" ] && \
			   [ ! -f "$part/whole_disk" ] && ! on_sataraid $part; then
				name="$(echo "${part##*/}" | sed 's,[!.],/,g')"
				if [ -e "/dev/$name" ]; then
					echo "/dev/$name"
				fi
			fi
		done

		# Add Serial ATA RAID devices
		if type dmraid >/dev/null 2>&1 && \
		   dmraid -s -c >/dev/null 2>&1; then
			for raidset in $(dmraid -sa -c 2>/dev/null ); do
				for part in /dev/mapper/"$raidset"*[0-9]; do
					echo "$part"
				done
			done
		fi
	elif [ "$(uname -s)" = Linux ]; then
		echo "Cannot find list of partitions!  (Try mounting /sys.)" >&2
		exit 1
	else
		# We don't know how to probe OSes on non-Linux kernels.  For
		# now, just don't get in the way.
		exit 0
	fi

	# Add MD RAID devices
	if [ -f /proc/mdstat ] ; then
		awk '/^md/ {printf "/dev/"$1"\n"}' /proc/mdstat
	fi

	# Also detect OSes on LVM volumes (assumes LVM is active)
	if type lvs >/dev/null 2>&1; then
		echo "$(LVM_SUPPRESS_FD_WARNINGS=1 log_output lvs --noheadings --separator : -o vg_name,lv_name 2>/dev/null |
			sed "s|-|--|g;s|^[[:space:]]*\(.*\):\(.*\)$|/dev/mapper/\1-\2|")"
	fi

	# now lets make sure we got all of the btrfs partitions and disks
	blkid | grep btrfs | cut -d ':' -f 1
}

parse_proc_swaps () {
	while read line; do
		set -f
		set -- $line
		set +f
		echo "$(mapdevfs $1) swap"
	done
}

parse_proc_mdstat () {
	if type udevadm >/dev/null 2>&1; then
		udevinfo () {
			udevadm info "$@"
		}
	fi
	while read line; do
		for word in $line; do
			dev="${word%%[*}"
			# TODO: factor this out to something in di-utils if
			# it's needed elsewhere
			if [ -d /sys/block ] && type udevinfo >/dev/null 2>&1; then
				if ! udevinfo -q path -n "/dev/$dev" 2>/dev/null | \
				     grep -q '/.*/.*/'; then
					continue
				fi
			elif ! echo "$dev" | grep -q "/part"; then
				continue
			fi
			raidpart="/dev/$dev"
			echo "$(mapdevfs "$raidpart")"
		done
	done
}

# Needed for idempotency
rm -f /var/lib/os-prober/labels

for prog in /usr/libexec/os-probes/init/*; do
	if [ -x "$prog" ] && [ -f "$prog" ]; then
		"$prog" || true
	fi
done

# We need to properly canonicalize partitions with mount points and partitions
# used in RAID
grep "^/dev/" /proc/mounts | parse_proc_mounts >"$OS_PROBER_TMP/mounted-map" || true
: >"$OS_PROBER_TMP/swaps-map"
if [ -f /proc/swaps ]; then
	grep "^/dev/" /proc/swaps | parse_proc_swaps >"$OS_PROBER_TMP/swaps-map" || true
fi
: >"$OS_PROBER_TMP/raided-map"
if [ -f /proc/mdstat ] ; then
	grep "^md" /proc/mdstat | cut -d: -f2- | parse_proc_mdstat >"$OS_PROBER_TMP/raided-map" || true
fi

: >"$OS_PROBER_TMP/btrfs-vols"

( (
for partition in $(partitions); do
	if ! mapped="$(mapdevfs "$partition")"; then
		log "Device '$partition' does not exist; skipping"
		continue
	fi

	# Skip partitions used in software RAID arrays
	if grep -q "^$mapped" "$OS_PROBER_TMP/raided-map" ; then
		debug "$partition: part of software raid array"
		continue
	fi

	# Skip partitions used as active swap
	if grep -q "^$mapped " "$OS_PROBER_TMP/swaps-map" ; then
		debug "$partition: is active swap"
		continue
	fi

	# do btrfs processing here; both mounted and unmounted will
	# be handled by 50mounted-tests so we can do a subvol only once.
	type=$(blkid -o value -s TYPE $mapped || true)
	if [ "$type" = btrfs ]; then
		uuid=$(blkid -o value -s UUID $mapped)
		if grep -q "^$uuid" "$OS_PROBER_TMP/btrfs-vols" ; then
			continue
		fi
		debug "btrfs volume uuid=$uuid partition=$partition"
		echo "$uuid" >>"$OS_PROBER_TMP/btrfs-vols"
		test="/usr/libexec/os-probes/50mounted-tests"
		if [ -f "$test" ] && [ -x "$test" ]; then
			debug "running $test on btrfs $partition"
			if "$test" btrfs "$uuid" "$partition"; then
				debug "os detected by $test"
		   		continue
			fi
		fi

	elif ! grep -q "^$mapped " "$OS_PROBER_TMP/mounted-map" ; then
		for test in /usr/libexec/os-probes/*; do
			if [ -f "$test" ] && [ -x "$test" ]; then
				debug "running $test on $partition"
				if "$test" "$partition"; then
					debug "os detected by $test"
			   		break
				fi
			fi
		done
	else
		mpoint=$(grep "^$mapped " "$OS_PROBER_TMP/mounted-map" | head -n1 | cut -d " " -f 2)
		mpoint="$(unescape_mount "$mpoint")"
		if [ "$mpoint" != "/target/boot" ] && [ "$mpoint" != "/target" ] && [ "$mpoint" != "/" ]; then
			type=$(grep "^$mapped " "$OS_PROBER_TMP/mounted-map" | head -n1 | cut -d " " -f 3)
			for test in /usr/libexec/os-probes/mounted/*; do
				if [ -f "$test" ] && [ -x "$test" ]; then
					debug "running $test on mounted $partition"
					if "$test" "$partition" "$mpoint" "$type"; then
						debug "os detected by $test"
						break
					fi
				fi
			done
		fi
	fi
done
) 9>&1 | logger 1>&-  # fd_logger
) 3>&1  # fd_result

Youez - 2016 - github.com/yon3zu
LinuXploit