[ Avaa Bypassed ]




Upload:

Command:

www-data@18.191.178.45: ~ $
#!/bin/bash

#  Copyright (C) 2018 Oracle.  All Rights Reserved.
#
#  Author: Darrick J. Wong <darrick.wong@oracle.com>
#
#  This program 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 2
#  of the License, or (at your option) any later version.
#
#  This program is distributed in the hope that it would 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 this program; if not, write the Free Software Foundation,
#  Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA.

# Automatically check an LVM-managed filesystem online.
# We use lvm snapshots to do this, which means that we can only
# check filesystems in VGs that have at least 256MB (or so) of
# free space.

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

if (( $EUID != 0 )); then
    echo "e2scrub must be run as root"
    exit 1
fi

snap_size_mb=256
fstrim=0
reap=0
e2fsck_opts=""
conffile="/etc/e2scrub.conf"

test -f "${conffile}" && . "${conffile}"

print_help() {
	echo "Usage: $0 [OPTIONS] mountpoint | device"
	echo
	echo "mountpoint must be on an LVM-managed block device"
	echo "-n: Show what commands e2scrub would execute."
	echo "-r: Remove e2scrub snapshot and exit, do not check anything."
	echo "-t: Run fstrim if successful."
	echo "-V: Print version information and exit."
}

print_version() {
	echo "e2scrub 1.46.5 (30-Dec-2021)"
}

exitcode() {
	ret="$1"

	# If we're being run as a service, the return code must fit the LSB
	# init script action error guidelines, which is to say that we
	# compress all errors to 1 ("generic or unspecified error", LSB 5.0
	# section 22.2) and hope the admin will scan the log for what
	# actually happened.

	# We have to sleep 2 seconds here because journald uses the pid to
	# connect our log messages to the systemd service.  This is critical
	# for capturing all the log messages if the scrub fails, because the
	# fail service uses the service name to gather log messages for the
	# error report.
	if [ -n "${SERVICE_MODE}" -a "${ret}" -ne 0 ]; then
		test "${ret}" -ne 0 && ret=1
		sleep 2
	fi

	exit "${ret}"
}

while getopts "nrtV" opt; do
    case "${opt}" in
	"n") DBG="echo Would execute: " ;;
	"r") reap=1;;
	"t") fstrim=1;;
	"V") print_version; exitcode 0;;
	*) print_help; exitcode 2;;
	esac
done
shift "$((OPTIND - 1))"

arg="$1"
if [ -z "${arg}" ]; then
	print_help
	exitcode 1
fi

if ! type lsblk >& /dev/null ; then
    echo "e2scrub: can't find lsblk --- is util-linux installed?"
    exitcode 1
fi

if ! type lvcreate >& /dev/null ; then
    echo "e2scrub: can't find lvcreate --- is lvm2 installed?"
    exitcode 1
fi

# close file descriptor 3 (from cron) since it causes lvm to kvetch
exec 3<&-

# Find the device for a given mountpoint
dev_from_mount() {
	local mountpt="$(realpath "$1")"

	lsblk -o NAME,FSTYPE,MOUNTPOINT -p -P -n 2> /dev/null | while read vars; do
		eval "${vars}"
		if [ "${mountpt}" != "${MOUNTPOINT}" ]; then
			continue
		fi
		case "${FSTYPE}" in
		ext[234])
			echo "${NAME}"
			return 0
			;;
		esac
	done
	return 1
}

# Check a device argument
dev_from_arg() {
	local dev="$1"
	local fstype="$(lsblk -o FSTYPE -n "${dev}" 2> /dev/null)"

	case "${fstype}" in
	ext[234])
		echo "${dev}"
		return 0
		;;
	esac
	return 1
}

mnt_from_dev() {
	local dev="$1"

	if [ -n "${dev}" ]; then
		lsblk -o MOUNTPOINT -n "${dev}"
	fi
}

# Construct block device path and mountpoint from argument
if [ -b "${arg}" ]; then
	dev="$(dev_from_arg "${arg}")"
	mnt="$(mnt_from_dev "${dev}")"
else
	dev="$(dev_from_mount "${arg}")"
	mnt="${arg}"
fi
if [ ! -e "${dev}" ]; then
	echo "${arg}: Not an ext[234] filesystem."
	print_help
	exitcode 16
fi

# Make sure this is an LVM device we can snapshot
lvm_vars="$(lvs --nameprefixes -o name,vgname,lv_role --noheadings "${dev}" 2> /dev/null)"
eval "${lvm_vars}"
if [ -z "${LVM2_VG_NAME}" ] || [ -z "${LVM2_LV_NAME}" ] ||
   echo "${LVM2_LV_ROLE}" | grep -q "snapshot"; then
	echo "${arg}: Not connnected to an LVM logical volume."
	print_help
	exitcode 16
fi
start_time="$(date +'%Y%m%d%H%M%S')"
snap="${LVM2_LV_NAME}.e2scrub"
snap_dev="/dev/${LVM2_VG_NAME}/${snap}"

teardown() {
	# Remove and wait for removal to succeed.
	${DBG} lvremove -f "${LVM2_VG_NAME}/${snap}"
	while [ -e "${snap_dev}" ] && [ "$?" -eq "5" ]; do
		sleep 0.5
		${DBG} lvremove -f "${LVM2_VG_NAME}/${snap}"
	done
}

check() {
	# First we recover the journal, then we see if e2fsck tries any
	# non-optimization repairs.  If either of these two returns a
	# non-zero status (errors fixed or remaining) then this fs is bad.
	E2FSCK_FIXES_ONLY=1
	export E2FSCK_FIXES_ONLY
	${DBG} "/sbin/e2fsck" -E journal_only -p ${e2fsck_opts} "${snap_dev}" || return $?
	${DBG} "/sbin/e2fsck" -f -y ${e2fsck_opts} "${snap_dev}"
}

mark_clean() {
	${DBG} "/sbin/tune2fs" -C 0 -T "${start_time}" "${dev}"
}

mark_corrupt() {
	${DBG} "/sbin/tune2fs" -E force_fsck "${dev}"
}

setup() {
	# Try to remove snapshot for 30s, bail out if we can't remove it.
	lvremove_deadline="$(( $(date "+%s") + 30))"
	${DBG} lvremove -f "${LVM2_VG_NAME}/${snap}" 2>/dev/null
	while [ -e "${snap_dev}" ] && [ "$?" -eq "5" ] &&
	      [ "$(date "+%s")" -lt "${lvremove_deadline}" ]; do
		sleep 0.5
		${DBG} lvremove -f "${LVM2_VG_NAME}/${snap}"
	done
	if [ -e "${snap_dev}" ]; then
		echo "${arg}: e2scrub snapshot is in use, cannot check!"
		return 1
	fi
	# Create the snapshot, wait for device to appear.
	${DBG} lvcreate -s -L "${snap_size_mb}m" -n "${snap}" "${LVM2_VG_NAME}/${LVM2_LV_NAME}"
	if [ $? -ne 0 ]; then
		echo "${arg}: e2scrub snapshot FAILED, will not check!"
		return 1
	fi
	${DBG} udevadm settle 2> /dev/null
	return 0
}

if [ "${reap}" -gt 0 ]; then
	if [ -e "${snap_dev}" ]; then
		teardown 2> /dev/null
	fi
	exit 0
fi
if ! setup; then
	exitcode 8
fi
trap "teardown; exit 1" EXIT INT QUIT TERM

# Check and react
check
case "$?" in
"0")
	# Clean check!
	echo "${arg}: Scrub succeeded."
	mark_clean
	teardown
	trap '' EXIT

	# Trim the free space, which requires the snapshot be deleted.
	if [ "${fstrim}" -eq 1 ] && [ -d "${mnt}" ] && type fstrim > /dev/null 2>&1; then
		echo "${arg}: Trimming free space."
		fstrim -v "${mnt}"
	fi

	ret=0
	;;
"8")
	# Operational error, what now?
	echo "${arg}: e2fsck operational error."
	teardown
	trap '' EXIT
	ret=8
	;;
*)
	# fsck failed.  Check if the snapshot is invalid; if so, make a
	# note of that at the end of the log.  This isn't necessarily a
	# failure because the mounted fs could have overflowed the
	# snapshot with regular disk writes /or/ our repair process
	# could have done it by repairing too much.
	#
	# If it's really corrupt we ought to fsck at next boot.
	is_invalid="$(lvs -o lv_snapshot_invalid --noheadings "${snap_dev}" | awk '{print $1}')"
	if [ -n "${is_invalid}" ]; then
		echo "${arg}: Scrub FAILED due to invalid snapshot."
		ret=8
	else
		echo "${arg}: Scrub FAILED due to corruption!  Unmount and run e2fsck -y."
		mark_corrupt
		ret=6
	fi
	teardown
	trap '' EXIT
	;;
esac

exitcode "${ret}"

Filemanager

Name Type Size Permission Actions
aa-remove-unknown File 3 KB 0755
aa-status File 62.62 KB 0755
aa-teardown File 137 B 0755
add-shell File 1.03 KB 0755
addgroup File 37.35 KB 0755
adduser File 37.35 KB 0755
agetty File 55.56 KB 0755
apparmor_parser File 1.48 MB 0755
apparmor_status File 62.62 KB 0755
arpd File 26.33 KB 0755
arptables File 219.04 KB 0755
arptables-nft File 219.04 KB 0755
arptables-nft-restore File 219.04 KB 0755
arptables-nft-save File 219.04 KB 0755
arptables-restore File 219.04 KB 0755
arptables-save File 219.04 KB 0755
badblocks File 34.32 KB 0755
blkdeactivate File 15.97 KB 0755
blkdiscard File 22.38 KB 0755
blkid File 50.41 KB 0755
blkzone File 34.38 KB 0755
blockdev File 30.38 KB 0755
bridge File 92.49 KB 0755
capsh File 30.3 KB 0755
cfdisk File 94.73 KB 0755
chcpu File 30.38 KB 0755
chgpasswd File 58.13 KB 0755
chmem File 34.38 KB 0755
chpasswd File 54.16 KB 0755
chroot File 38.51 KB 0755
cpgr File 48.29 KB 0755
cppw File 48.29 KB 0755
cryptdisks_start File 1.51 KB 0755
cryptdisks_stop File 844 B 0755
cryptsetup File 169.92 KB 0755
cryptsetup-reencrypt File 90.38 KB 0755
cryptsetup-ssh File 23.53 KB 0755
ctrlaltdel File 14.38 KB 0755
dcb File 80.52 KB 0755
debugfs File 229.8 KB 0755
delgroup File 16.11 KB 0755
deluser File 16.11 KB 0755
depmod File 170.34 KB 0755
devlink File 142.86 KB 0755
dhclient File 442.66 KB 0755
dhclient-script File 15.92 KB 0755
dmsetup File 171.01 KB 0755
dmstats File 171.01 KB 0755
dosfsck File 82.38 KB 0755
dosfslabel File 38.38 KB 0755
dumpe2fs File 30.31 KB 0755
e2freefrag File 14.3 KB 0755
e2fsck File 351.84 KB 0755
e2image File 42.31 KB 0755
e2label File 102.55 KB 0755
e2mmpstatus File 30.31 KB 0755
e2scrub File 7.13 KB 0755
e2scrub_all File 5.27 KB 0755
e2undo File 22.3 KB 0755
e4crypt File 30.38 KB 0755
e4defrag File 30.3 KB 0755
ebtables File 219.04 KB 0755
ebtables-nft File 219.04 KB 0755
ebtables-nft-restore File 219.04 KB 0755
ebtables-nft-save File 219.04 KB 0755
ebtables-restore File 219.04 KB 0755
ebtables-save File 219.04 KB 0755
faillock File 14.15 KB 0755
fatlabel File 38.38 KB 0755
fdisk File 110.42 KB 0755
filefrag File 18.32 KB 0755
findfs File 14.38 KB 0755
fsck File 42.42 KB 0755
fsck.cramfs File 30.44 KB 0755
fsck.ext2 File 351.84 KB 0755
fsck.ext3 File 351.84 KB 0755
fsck.ext4 File 351.84 KB 0755
fsck.fat File 82.38 KB 0755
fsck.minix File 54.41 KB 0755
fsck.msdos File 82.38 KB 0755
fsck.vfat File 82.38 KB 0755
fsfreeze File 14.38 KB 0755
fstab-decode File 18.3 KB 0755
fstrim File 42.38 KB 0755
genl File 90.44 KB 0755
getcap File 14.3 KB 0755
getpcaps File 14.3 KB 0755
getty File 55.56 KB 0755
groupadd File 66.91 KB 0755
groupdel File 62.73 KB 0755
groupmems File 54.19 KB 0755
groupmod File 66.82 KB 0755
grpck File 58.13 KB 0755
grpconv File 50.01 KB 0755
grpunconv File 50.01 KB 0755
halt File 973.23 KB 0755
hwclock File 50.5 KB 0755
iconvconfig File 30.4 KB 0755
init File 1.55 MB 0755
insmod File 170.34 KB 0755
installkernel File 2.6 KB 0755
integritysetup File 54.07 KB 0755
invoke-rc.d File 16.12 KB 0755
ip File 597.62 KB 0755
ip6tables File 219.04 KB 0755
ip6tables-apply File 6.89 KB 0755
ip6tables-legacy File 96.95 KB 0755
ip6tables-legacy-restore File 96.95 KB 0755
ip6tables-legacy-save File 96.95 KB 0755
ip6tables-nft File 219.04 KB 0755
ip6tables-nft-restore File 219.04 KB 0755
ip6tables-nft-save File 219.04 KB 0755
ip6tables-restore File 219.04 KB 0755
ip6tables-restore-translate File 219.04 KB 0755
ip6tables-save File 219.04 KB 0755
ip6tables-translate File 219.04 KB 0755
iptables File 219.04 KB 0755
iptables-apply File 6.89 KB 0755
iptables-legacy File 96.95 KB 0755
iptables-legacy-restore File 96.95 KB 0755
iptables-legacy-save File 96.95 KB 0755
iptables-nft File 219.04 KB 0755
iptables-nft-restore File 219.04 KB 0755
iptables-nft-save File 219.04 KB 0755
iptables-restore File 219.04 KB 0755
iptables-restore-translate File 219.04 KB 0755
iptables-save File 219.04 KB 0755
iptables-translate File 219.04 KB 0755
isosize File 14.38 KB 0755
killall5 File 30.38 KB 0755
ldattach File 26.38 KB 0755
ldconfig File 387 B 0755
ldconfig.real File 1.16 MB 0755
logsave File 14.16 KB 0755
losetup File 70.52 KB 0755
lsmod File 170.34 KB 0755
luksformat File 3.32 KB 0755
mkdosfs File 50.83 KB 0755
mke2fs File 130.62 KB 0755
mkfs File 14.38 KB 0755
mkfs.bfs File 22.38 KB 0755
mkfs.cramfs File 34.32 KB 0755
mkfs.ext2 File 130.62 KB 0755
mkfs.ext3 File 130.62 KB 0755
mkfs.ext4 File 130.62 KB 0755
mkfs.fat File 50.83 KB 0755
mkfs.minix File 42.39 KB 0755
mkfs.msdos File 50.83 KB 0755
mkfs.vfat File 50.83 KB 0755
mkhomedir_helper File 22.17 KB 0755
mklost+found File 14.3 KB 0755
mkswap File 46.38 KB 0755
modinfo File 170.34 KB 0755
modprobe File 170.34 KB 0755
netplan File 798 B 0755
newusers File 74.73 KB 0755
nfnl_osf File 18.3 KB 0755
nologin File 14.3 KB 0755
pam-auth-update File 20.5 KB 0755
pam_extrausers_chkpwd File 22.15 KB 2755
pam_extrausers_update File 30.15 KB 0755
pam_getenv File 2.82 KB 0755
pam_timestamp_check File 14.15 KB 0755
pivot_root File 14.38 KB 0755
plymouthd File 150.55 KB 0755
poweroff File 973.23 KB 0755
pwck File 50.13 KB 0755
pwconv File 46.01 KB 0755
pwunconv File 42.01 KB 0755
readprofile File 22.41 KB 0755
reboot File 973.23 KB 0755
remove-shell File 1.07 KB 0755
resize2fs File 66.3 KB 0755
rfkill File 30.23 KB 0755
rmmod File 170.34 KB 0755
rmt File 58.57 KB 0755
rmt-tar File 58.57 KB 0755
rtacct File 28.31 KB 0755
rtcwake File 34.38 KB 0755
rtmon File 90.39 KB 0755
runlevel File 973.23 KB 0755
runuser File 54.38 KB 0755
service File 8.88 KB 0755
setcap File 14.3 KB 0755
sfdisk File 102.38 KB 0755
shadowconfig File 885 B 0755
shutdown File 973.23 KB 0755
sshd File 895.7 KB 0755
start-stop-daemon File 47.35 KB 0755
sudo_logsrvd File 200.1 KB 0755
sudo_sendlog File 107.34 KB 0755
sulogin File 42.38 KB 0755
swaplabel File 18.38 KB 0755
swapoff File 22.38 KB 0755
swapon File 42.38 KB 0755
switch_root File 22.38 KB 0755
sysctl File 30.23 KB 0755
tarcat File 936 B 0755
tc File 614.08 KB 0755
telinit File 973.23 KB 0755
tipc File 90.44 KB 0755
tune2fs File 102.55 KB 0755
tzconfig File 106 B 0755
unix_chkpwd File 26.15 KB 2755
unix_update File 30.15 KB 0755
update-ca-certificates File 5.29 KB 0755
update-passwd File 34.56 KB 0755
update-rc.d File 16.92 KB 0755
update-shells File 3.72 KB 0755
useradd File 127.66 KB 0755
userdel File 86.85 KB 0755
usermod File 123.46 KB 0755
vdpa File 30.56 KB 0755
veritysetup File 43.76 KB 0755
vigr File 56.53 KB 0755
vipw File 56.53 KB 0755
visudo File 219.79 KB 0755
wipefs File 38.38 KB 0755
wpa_action File 1.69 KB 0755
wpa_cli File 140.31 KB 0755
wpa_supplicant File 3.24 MB 0755
xtables-legacy-multi File 96.95 KB 0755
xtables-monitor File 219.04 KB 0755
xtables-nft-multi File 219.04 KB 0755
zic File 62.32 KB 0755
zramctl File 54.52 KB 0755