Linux premium.us5.svlogins.com 5.14.0-611.13.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 11 04:57:59 EST 2025 x86_64
LiteSpeed
Server IP : 204.197.172.210 & Your IP : 216.73.216.85
Domains :
Cant Read [ /etc/named.conf ]
User : nusfahde
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
bin /
Delete
Unzip
Name
Size
Permission
Date
Action
GET
15.82
KB
-rwxr-xr-x
2022-03-25 08:00
[
51.63
KB
-rwxr-xr-x
2026-04-04 22:33
aclocal
35.52
KB
-rwxr-xr-x
2023-09-27 12:16
aclocal-1.16
35.52
KB
-rwxr-xr-x
2023-09-27 12:16
addr2line
27.74
KB
-rwxr-xr-x
2026-04-04 21:15
animate
15.27
KB
-rwxr-xr-x
2025-04-01 12:55
ar
55.98
KB
-rwxr-xr-x
2026-04-04 21:15
arch
31.47
KB
-rwxr-xr-x
2026-04-04 22:33
arpaname
15.11
KB
-rwxr-xr-x
2026-06-10 13:21
as
710.31
KB
-rwxr-xr-x
2026-04-04 21:15
aspell
151.12
KB
-rwxr-xr-x
2022-01-26 21:47
at
4.41
KB
-rwxr-xr-x
2025-11-12 00:38
atq
4.41
KB
-rwxr-xr-x
2025-11-12 00:38
atrm
4.41
KB
-rwxr-xr-x
2025-11-12 00:38
autoconf
14.42
KB
-rwxr-xr-x
2025-09-21 12:23
autoheader
8.33
KB
-rwxr-xr-x
2025-09-21 12:23
autom4te
31.43
KB
-rwxr-xr-x
2025-09-21 12:23
automake
251.93
KB
-rwxr-xr-x
2023-09-27 12:16
automake-1.16
251.93
KB
-rwxr-xr-x
2023-09-27 12:16
autoreconf
20.57
KB
-rwxr-xr-x
2025-09-21 12:23
autoscan
16.72
KB
-rwxr-xr-x
2025-09-21 12:23
autoupdate
33.08
KB
-rwxr-xr-x
2025-09-21 12:23
awk
698.17
KB
-rwxr-xr-x
2022-03-30 22:25
b2sum
51.59
KB
-rwxr-xr-x
2026-04-04 22:33
base32
35.49
KB
-rwxr-xr-x
2026-04-04 22:33
base64
35.48
KB
-rwxr-xr-x
2026-04-04 22:33
basename
31.48
KB
-rwxr-xr-x
2026-04-04 22:33
basenc
47.82
KB
-rwxr-xr-x
2026-04-04 22:33
bash
1.32
MB
-rwxr-xr-x
2024-04-30 14:33
bashbug-64
6.91
KB
-rwxr-xr-x
2024-04-30 14:33
batch
140
B
-rwxr-xr-x
2025-11-12 00:38
bison
494.76
KB
-rwxr-xr-x
2022-01-27 00:15
bunzip2
39.45
KB
-rwxr-xr-x
2026-04-04 21:34
bzcat
39.45
KB
-rwxr-xr-x
2026-04-04 21:34
bzcmp
2.09
KB
-rwxr-xr-x
2026-04-04 21:34
bzdiff
2.09
KB
-rwxr-xr-x
2026-04-04 21:34
bzgrep
2.01
KB
-rwxr-xr-x
2026-04-04 21:34
bzip2
39.45
KB
-rwxr-xr-x
2026-04-04 21:34
bzip2recover
15.23
KB
-rwxr-xr-x
2026-04-04 21:34
bzless
1.23
KB
-rwxr-xr-x
2026-04-04 21:34
bzmore
1.23
KB
-rwxr-xr-x
2026-04-04 21:34
c++
1.05
MB
-rwxr-x---
2026-04-04 22:27
c++filt
27.19
KB
-rwxr-xr-x
2026-04-04 21:15
c89
228
B
-rwxr-x---
2026-04-04 22:18
c99
219
B
-rwxr-x---
2026-04-04 22:18
cagefs_enter.proxied
4.42
KB
-rwxr-xr-x
2026-01-20 13:17
cal
51.82
KB
-rwxr-xr-x
2026-04-04 22:15
captoinfo
87.79
KB
-rwxr-xr-x
2025-09-21 09:23
cat
35.45
KB
-rwxr-xr-x
2026-04-04 22:33
catchsegv
3.21
KB
-rwxr-xr-x
2026-05-26 14:05
cc
1.04
MB
-rwxr-x---
2026-04-04 22:27
chcon
60.05
KB
-rwxr-xr-x
2026-04-04 22:33
chgrp
55.98
KB
-rwxr-xr-x
2026-04-04 22:33
chmod
55.96
KB
-rwxr-xr-x
2026-04-04 22:33
chown
59.98
KB
-rwxr-xr-x
2026-04-04 22:33
chrt
27.3
KB
-rwxr-xr-x
2026-04-04 22:15
cksum
31.38
KB
-rwxr-xr-x
2026-04-04 22:33
cldetect
10.34
KB
-rwxr-xr-x
2026-06-03 10:46
clear
15.15
KB
-rwxr-xr-x
2025-09-21 09:23
clusterdb
64.53
KB
-rwxr-xr-x
2026-03-10 21:17
cmp
40.13
KB
-rwxr-xr-x
2022-01-29 18:15
col
23.23
KB
-rwxr-xr-x
2026-04-04 22:15
colcrt
15.19
KB
-rwxr-xr-x
2026-04-04 22:15
colrm
15.16
KB
-rwxr-xr-x
2026-04-04 22:15
column
35.34
KB
-rwxr-xr-x
2026-04-04 22:15
comm
35.56
KB
-rwxr-xr-x
2026-04-04 22:33
compare
15.27
KB
-rwxr-xr-x
2025-04-01 12:55
composite
15.27
KB
-rwxr-xr-x
2025-04-01 12:55
conjure
15.27
KB
-rwxr-xr-x
2025-04-01 12:55
convert
15.27
KB
-rwxr-xr-x
2025-04-01 12:55
cp
141.02
KB
-rwxr-xr-x
2026-04-04 22:33
cpan
8.37
KB
-rwxr-xr-x
2025-05-13 21:00
cpp
1.05
MB
-rwxr-xr-x
2026-04-04 22:27
createdb
72.57
KB
-rwxr-xr-x
2026-03-10 21:17
createuser
64.8
KB
-rwxr-xr-x
2026-03-10 21:17
crontab
1.49
KB
-rwxr-xr-x
2026-04-09 05:59
crontab.cagefs
40.47
KB
-rwxr-xr-x
2026-05-29 09:34
csplit
108.66
KB
-rwxr-xr-x
2026-04-04 22:33
curl
248.48
KB
-rwxr-xr-x
2026-04-04 23:21
cut
43.6
KB
-rwxr-xr-x
2026-04-04 22:33
cyrusbdb2current
1.58
MB
-rwxr-xr-x
2025-09-25 11:46
date
103.84
KB
-rwxr-xr-x
2026-04-04 22:33
dbiprof
6.06
KB
-rwxr-xr-x
2022-02-16 08:03
dd
67.94
KB
-rwxr-xr-x
2026-04-04 22:33
delv
45.38
KB
-rwxr-xr-x
2026-06-10 13:21
df
80.53
KB
-rwxr-xr-x
2026-04-04 22:33
diff
194.7
KB
-rwxr-xr-x
2022-01-29 18:15
diff3
52.3
KB
-rwxr-xr-x
2022-01-29 18:15
dig
136.59
KB
-rwxr-xr-x
2026-06-10 13:21
dir
137.45
KB
-rwxr-xr-x
2026-04-04 22:33
dircolors
39.62
KB
-rwxr-xr-x
2026-04-04 22:33
dirname
27.3
KB
-rwxr-xr-x
2026-04-04 22:33
display
15.27
KB
-rwxr-xr-x
2025-04-01 12:55
dnstap-read
23.19
KB
-rwxr-xr-x
2026-06-10 13:21
dropdb
60.36
KB
-rwxr-xr-x
2026-03-10 21:17
dropuser
60.3
KB
-rwxr-xr-x
2026-03-10 21:17
du
149.26
KB
-rwxr-xr-x
2026-04-04 22:33
echo
27.28
KB
-rwxr-xr-x
2026-04-04 22:33
ed
52.51
KB
-rwxr-xr-x
2022-01-30 05:02
egrep
32
B
-rwxr-xr-x
2022-01-31 20:22
enc2xs
40.69
KB
-rwxr-xr-x
2022-02-11 16:42
enchant
23.73
KB
-rwxr-xr-x
2022-01-30 11:02
enchant-lsmod
15.8
KB
-rwxr-xr-x
2022-01-30 11:02
env
44.03
KB
-rwxr-xr-x
2026-04-04 22:33
eps2eps
643
B
-rwxr-xr-x
2025-05-14 16:03
eqn
189.52
KB
-rwxr-xr-x
2022-02-01 10:44
ex
1.38
MB
-rwxr-xr-x
2026-06-03 14:50
expand
39.54
KB
-rwxr-xr-x
2026-04-04 22:33
expr
108.43
KB
-rwxr-xr-x
2026-04-04 22:33
factor
71.87
KB
-rwxr-xr-x
2026-04-04 22:33
false
27.28
KB
-rwxr-xr-x
2026-04-04 22:33
fc-cache
139
B
-rwxr-xr-x
2023-01-23 15:48
fc-cache-64
23.17
KB
-rwxr-xr-x
2023-01-23 19:48
fc-cat
19.16
KB
-rwxr-xr-x
2023-01-23 19:48
fc-conflist
15.13
KB
-rwxr-xr-x
2023-01-23 19:48
fc-list
15.13
KB
-rwxr-xr-x
2023-01-23 19:48
fc-match
15.13
KB
-rwxr-xr-x
2023-01-23 19:48
fc-pattern
15.14
KB
-rwxr-xr-x
2023-01-23 19:48
fc-query
15.13
KB
-rwxr-xr-x
2023-01-23 19:48
fc-scan
15.14
KB
-rwxr-xr-x
2023-01-23 19:48
fc-validate
15.14
KB
-rwxr-xr-x
2023-01-23 19:48
fgrep
32
B
-rwxr-xr-x
2022-01-31 20:22
file
27.63
KB
-rwxr-xr-x
2026-04-05 00:57
find
284.95
KB
-rwxr-xr-x
2024-10-02 21:04
flex
412.64
KB
-rwxr-xr-x
2022-01-30 08:23
flex++
412.64
KB
-rwxr-xr-x
2022-01-30 08:23
flock
23.37
KB
-rwxr-xr-x
2026-04-04 22:15
fmt
39.58
KB
-rwxr-xr-x
2026-04-04 22:33
fold
39.51
KB
-rwxr-xr-x
2026-04-04 22:33
free
23.36
KB
-rwxr-xr-x
2024-04-30 16:43
freetype-config
4.32
KB
-rwxr-xr-x
2025-03-31 15:40
funzip
31.25
KB
-rwxr-xr-x
2026-04-09 11:24
g++
1.05
MB
-rwxr-x---
2026-04-04 22:27
gawk
698.17
KB
-rwxr-xr-x
2022-03-30 22:25
gcc
1.04
MB
-rwxr-x---
2026-04-04 22:27
gcc-ar
27.67
KB
-rwxr-xr-x
2026-04-04 22:27
gcc-nm
27.65
KB
-rwxr-xr-x
2026-04-04 22:27
gcc-ranlib
27.67
KB
-rwxr-xr-x
2026-04-04 22:27
gcov
477.13
KB
-rwxr-xr-x
2026-04-04 22:27
gcov-dump
291.77
KB
-rwxr-xr-x
2026-04-04 22:28
gcov-tool
320.47
KB
-rwxr-xr-x
2026-04-04 22:27
gem
542
B
-rwxr-xr-x
2026-05-19 20:00
gencat
27.45
KB
-rwxr-xr-x
2026-05-26 14:08
geoiplookup
15.87
KB
-rwxr-xr-x
2022-11-23 16:40
geoiplookup6
15.82
KB
-rwxr-xr-x
2022-11-23 16:40
geqn
189.52
KB
-rwxr-xr-x
2022-02-01 10:44
getconf
35.23
KB
-rwxr-xr-x
2026-05-26 14:08
getent
35.86
KB
-rwxr-xr-x
2026-05-26 14:08
getopt
23.27
KB
-rwxr-xr-x
2026-04-04 22:15
ghostscript
15.13
KB
-rwxr-xr-x
2025-05-14 16:03
git
4.19
MB
-rwxr-xr-x
2026-04-05 06:38
git-receive-pack
4.19
MB
-rwxr-xr-x
2026-04-05 06:38
git-shell
807.58
KB
-rwxr-xr-x
2026-04-05 06:38
git-upload-archive
4.19
MB
-rwxr-xr-x
2026-04-05 06:38
git-upload-pack
4.19
MB
-rwxr-xr-x
2026-04-05 06:38
gm
15.67
KB
-rwxr-xr-x
2022-11-23 17:49
gmake
249.8
KB
-rwxr-xr-x
2024-04-02 12:55
gneqn
916
B
-rwxr-xr-x
2022-02-01 10:44
gnroff
3.21
KB
-rwxr-xr-x
2022-02-01 10:44
gpg
1.07
MB
-rwxr-xr-x
2026-01-15 21:34
gpg-agent
342.27
KB
-rwxr-xr-x
2026-01-15 21:34
gpg-error
36.1
KB
-rwxr-xr-x
2022-02-09 23:24
gpgsplit
27.5
KB
-rwxr-xr-x
2026-01-15 21:34
gpgv
295.43
KB
-rwxr-xr-x
2026-01-15 21:34
gpic
201.72
KB
-rwxr-xr-x
2022-02-01 10:44
gprof
101.48
KB
-rwxr-xr-x
2026-04-04 21:15
grep
154.49
KB
-rwxr-xr-x
2022-01-31 20:22
groff
96.77
KB
-rwxr-xr-x
2022-02-01 10:44
grops
167.26
KB
-rwxr-xr-x
2022-02-01 10:44
grotty
122.2
KB
-rwxr-xr-x
2022-02-01 10:44
groups
35.48
KB
-rwxr-xr-x
2026-04-04 22:33
gs
15.13
KB
-rwxr-xr-x
2025-05-14 16:03
gsnd
281
B
-rwxr-xr-x
2025-05-14 16:03
gtar
518.13
KB
-rwxr-xr-x
2026-04-04 21:56
gtbl
130.86
KB
-rwxr-xr-x
2022-02-01 10:44
gtroff
732.07
KB
-rwxr-xr-x
2022-02-01 10:44
gunzip
2.29
KB
-rwxr-xr-x
2022-10-15 17:26
gzexe
6.3
KB
-rwxr-xr-x
2022-10-15 17:26
gzip
89.63
KB
-rwxr-xr-x
2022-10-15 17:26
h2ph
28.69
KB
-rwxr-xr-x
2025-07-28 03:54
h2xs
59.5
KB
-rwxr-xr-x
2025-07-28 03:53
head
39.6
KB
-rwxr-xr-x
2026-04-04 22:33
hexdump
51.41
KB
-rwxr-xr-x
2026-04-04 22:15
host
108.57
KB
-rwxr-xr-x
2026-06-10 13:21
hostid
31.47
KB
-rwxr-xr-x
2026-04-04 22:33
hostname
23.84
KB
-rwxr-xr-x
2022-02-14 11:22
hunspell
102.67
KB
-rwxr-xr-x
2022-01-31 20:22
iconv
64.09
KB
-rwxr-xr-x
2026-05-26 14:08
icu-config
205
B
-rwxr-xr-x
2025-07-29 16:13
icu-config-64
21.67
KB
-rwxr-xr-x
2025-07-29 16:16
icuinfo
15.49
KB
-rwxr-xr-x
2025-07-29 16:17
id
39.52
KB
-rwxr-xr-x
2026-04-04 22:33
identify
15.27
KB
-rwxr-xr-x
2025-04-01 12:55
idn
36.46
KB
-rwxr-xr-x
2022-02-14 15:33
ifnames
4.03
KB
-rwxr-xr-x
2025-09-21 12:23
import
15.27
KB
-rwxr-xr-x
2025-04-01 12:55
infocmp
63.68
KB
-rwxr-xr-x
2025-09-21 09:23
infotocap
87.79
KB
-rwxr-xr-x
2025-09-21 09:23
install
149.08
KB
-rwxr-xr-x
2026-04-04 22:33
instmodsh
4.1
KB
-rwxr-xr-x
2022-02-24 09:56
ionice
15.21
KB
-rwxr-xr-x
2026-04-04 22:15
ipcrm
19.23
KB
-rwxr-xr-x
2026-04-04 22:15
ipcs
39.34
KB
-rwxr-xr-x
2026-04-04 22:15
isosize
15.15
KB
-rwxr-xr-x
2026-04-04 22:15
ispell
992
B
-rwxr-xr-x
2019-10-08 00:15
join
51.69
KB
-rwxr-xr-x
2026-04-04 22:33
kill
31.28
KB
-rwxr-xr-x
2026-04-04 22:15
ld
1.71
MB
-rwxr-x---
2026-04-04 21:15
ld.bfd
1.71
MB
-rwxr-x---
2026-04-04 21:15
ldd
5.32
KB
-rwxr-xr-x
2026-05-26 14:05
less
197.7
KB
-rwxr-xr-x
2025-09-21 12:35
lessecho
15.17
KB
-rwxr-xr-x
2025-09-21 12:35
lesskey
24.61
KB
-rwxr-xr-x
2025-09-21 12:35
lesspipe.sh
3.5
KB
-rwxr-xr-x
2025-09-21 11:44
lex
412.64
KB
-rwxr-xr-x
2022-01-30 08:23
libnetcfg
15.41
KB
-rwxr-xr-x
2025-07-28 03:54
libtool
359.18
KB
-rwxr-xr-x
2024-10-01 17:49
libtoolize
126.17
KB
-rwxr-xr-x
2024-10-01 17:49
link
31.48
KB
-rwxr-xr-x
2026-04-04 22:33
ln
55.95
KB
-rwxr-xr-x
2026-04-04 22:33
locale
59.08
KB
-rwxr-xr-x
2026-05-26 14:08
localedef
314.05
KB
-rwxr-xr-x
2026-05-26 14:08
logger
35.98
KB
-rwxr-xr-x
2026-04-04 22:15
login
43.46
KB
-rwxr-xr-x
2026-04-04 22:15
logname
31.47
KB
-rwxr-xr-x
2026-04-04 22:33
look
19.17
KB
-rwxr-xr-x
2026-04-04 22:15
ls
137.45
KB
-rwxr-xr-x
2026-04-04 22:33
lto-dump
26.59
MB
-rwxr-xr-x
2026-04-04 22:27
m4
240.4
KB
-rwxr-xr-x
2022-03-31 07:28
make
249.8
KB
-rwxr-xr-x
2024-04-02 12:55
make-dummy-cert
614
B
-rwxr-xr-x
2026-06-11 21:57
mariadb
5.01
MB
-rwxr-xr-x
2026-05-23 20:39
mariadb-access
109.48
KB
-rwxr-xr-x
2026-05-23 20:10
mariadb-admin
4.79
MB
-rwxr-xr-x
2026-05-23 20:39
mariadb-binlog
5.05
MB
-rwxr-xr-x
2026-05-23 20:39
mariadb-check
4.79
MB
-rwxr-xr-x
2026-05-23 20:39
mariadb-conv
4.52
MB
-rwxr-xr-x
2026-05-23 20:39
mariadb-convert-table-format
4.28
KB
-rwxr-xr-x
2026-05-23 20:10
mariadb-dump
4.89
MB
-rwxr-xr-x
2026-05-23 20:39
mariadb-dumpslow
8.19
KB
-rwxr-xr-x
2026-05-23 20:10
mariadb-embedded
23.56
MB
-rwxr-xr-x
2026-05-23 20:39
mariadb-find-rows
3.35
KB
-rwxr-xr-x
2026-05-23 20:10
mariadb-hotcopy
34.67
KB
-rwxr-xr-x
2026-05-23 20:10
mariadb-import
4.78
MB
-rwxr-xr-x
2026-05-23 20:39
mariadb-plugin
4.5
MB
-rwxr-xr-x
2026-05-23 20:39
mariadb-secure-installation
13.66
KB
-rwxr-xr-x
2026-05-23 20:10
mariadb-setpermission
17.7
KB
-rwxr-xr-x
2026-05-23 20:10
mariadb-show
4.78
MB
-rwxr-xr-x
2026-05-23 20:39
mariadb-slap
4.8
MB
-rwxr-xr-x
2026-05-23 20:39
mariadb-tzinfo-to-sql
4.5
MB
-rwxr-xr-x
2026-05-23 20:39
mariadb-waitpid
4.49
MB
-rwxr-xr-x
2026-05-23 20:39
mcookie
27.3
KB
-rwxr-xr-x
2026-04-04 22:15
md5sum
39.44
KB
-rwxr-xr-x
2026-04-04 22:33
mesg
15.14
KB
-rwxr-xr-x
2026-04-04 22:15
mkdir
68.12
KB
-rwxr-xr-x
2026-04-04 22:33
mkfifo
39.64
KB
-rwxr-xr-x
2026-04-04 22:33
mknod
43.68
KB
-rwxr-xr-x
2026-04-04 22:33
mktemp
39.61
KB
-rwxr-xr-x
2026-04-04 22:33
mogrify
15.27
KB
-rwxr-xr-x
2025-04-01 12:55
montage
15.27
KB
-rwxr-xr-x
2025-04-01 12:55
more
43.42
KB
-rwxr-xr-x
2026-04-04 22:15
msql2mysql
1.42
KB
-rwxr-xr-x
2026-05-23 20:10
mv
140.95
KB
-rwxr-xr-x
2026-04-04 22:33
my_print_defaults
4.49
MB
-rwxr-xr-x
2026-05-23 20:39
mysql
5.01
MB
-rwxr-xr-x
2026-05-23 20:39
mysql_config
4.47
KB
-rwxr-xr-x
2026-05-23 20:10
mysql_find_rows
3.35
KB
-rwxr-xr-x
2026-05-23 20:10
mysql_waitpid
4.49
MB
-rwxr-xr-x
2026-05-23 20:39
mysqlaccess
109.48
KB
-rwxr-xr-x
2026-05-23 20:10
mysqladmin
4.79
MB
-rwxr-xr-x
2026-05-23 20:39
mysqlbinlog
5.05
MB
-rwxr-xr-x
2026-05-23 20:39
mysqlcheck
4.79
MB
-rwxr-xr-x
2026-05-23 20:39
mysqldump
4.89
MB
-rwxr-xr-x
2026-05-23 20:39
mysqlimport
4.78
MB
-rwxr-xr-x
2026-05-23 20:39
mysqlshow
4.78
MB
-rwxr-xr-x
2026-05-23 20:39
mytop
72.03
KB
-rwxr-xr-x
2026-05-23 20:10
namei
23.23
KB
-rwxr-xr-x
2026-04-04 22:15
nano
346.2
KB
-rwxr-xr-x
2025-03-13 03:12
neqn
916
B
-rwxr-xr-x
2022-02-01 10:44
nice
35.48
KB
-rwxr-xr-x
2026-04-04 22:33
nl
100.5
KB
-rwxr-xr-x
2026-04-04 22:33
nm
44.72
KB
-rwxr-xr-x
2026-04-04 21:15
nohup
35.4
KB
-rwxr-xr-x
2026-04-04 22:33
nproc
35.5
KB
-rwxr-xr-x
2026-04-04 22:33
nroff
3.21
KB
-rwxr-xr-x
2022-02-01 10:44
nslookup
112.52
KB
-rwxr-xr-x
2026-06-10 13:21
nsupdate
71.8
KB
-rwxr-xr-x
2026-06-10 13:21
numfmt
55.63
KB
-rwxr-xr-x
2026-04-04 22:33
objcopy
185.37
KB
-rwxr-xr-x
2026-04-04 21:15
objdump
413.09
KB
-rwxr-xr-x
2026-04-04 21:15
od
63.88
KB
-rwxr-xr-x
2026-04-04 22:33
openssl
1.07
MB
-rwxr-xr-x
2026-06-11 21:57
pango-list
19.11
KB
-rwxr-xr-x
2023-04-07 10:19
pango-segmentation
19.13
KB
-rwxr-xr-x
2023-04-07 10:19
pango-view
60.17
KB
-rwxr-xr-x
2023-04-07 10:19
passenger
1.73
KB
-rwxr-xr-x
2026-05-25 13:11
passwd
4.41
KB
-rwxr-xr-x
2022-04-14 14:45
paste
35.39
KB
-rwxr-xr-x
2026-04-04 22:33
patch
195.02
KB
-rwxr-xr-x
2022-03-25 15:42
pathchk
35.47
KB
-rwxr-xr-x
2026-04-04 22:33
pdf2dsc
701
B
-rwxr-xr-x
2025-05-14 16:03
pdf2ps
913
B
-rwxr-xr-x
2025-05-14 16:03
perl
15.13
KB
-rwxr-xr-x
2025-07-28 03:54
perl5.32.1
15.13
KB
-rwxr-xr-x
2025-07-28 03:54
perlbug
43.81
KB
-rwxr-xr-x
2025-07-28 03:54
perldoc
118
B
-rwxr-xr-x
2022-02-14 23:51
perlivp
10.56
KB
-rwxr-xr-x
2025-07-28 03:53
perlml
14.49
KB
-rwxr-xr-x
2025-10-02 19:40
perlthanks
43.81
KB
-rwxr-xr-x
2025-07-28 03:54
pg_dump
442.02
KB
-rwxr-xr-x
2026-03-10 21:17
pg_dumpall
109.77
KB
-rwxr-xr-x
2026-03-10 21:17
pg_restore
167.67
KB
-rwxr-xr-x
2026-03-10 21:17
pgrep
31.42
KB
-rwxr-xr-x
2024-04-30 16:43
php
937
B
-rwxr-xr-x
2026-05-18 16:41
pic
201.72
KB
-rwxr-xr-x
2022-02-01 10:44
piconv
8.08
KB
-rwxr-xr-x
2022-02-11 16:42
ping
89.33
KB
-rwxr-xr-x
2025-10-20 12:44
pinky
35.41
KB
-rwxr-xr-x
2026-04-04 22:33
pkg-config
335
B
-rwxr-xr-x
2023-04-06 20:27
pkill
31.42
KB
-rwxr-xr-x
2024-04-30 16:43
pl2pm
4.43
KB
-rwxr-xr-x
2025-07-28 03:54
pmap
35.39
KB
-rwxr-xr-x
2024-04-30 16:43
pod2html
4.04
KB
-rwxr-xr-x
2025-07-28 03:54
pod2man
14.68
KB
-rwxr-xr-x
2022-03-25 12:10
pod2text
10.55
KB
-rwxr-xr-x
2022-03-25 12:10
pod2usage
4.01
KB
-rwxr-xr-x
2022-02-11 16:01
podchecker
3.57
KB
-rwxr-xr-x
2022-02-11 19:01
post-grohtml
199.76
KB
-rwxr-xr-x
2022-02-01 10:44
pr
72.1
KB
-rwxr-xr-x
2026-04-04 22:33
pre-grohtml
92.92
KB
-rwxr-xr-x
2022-02-01 10:44
precat
5.53
KB
-rwxr-xr-x
2019-10-08 00:15
preunzip
5.53
KB
-rwxr-xr-x
2019-10-08 00:15
prezip
5.53
KB
-rwxr-xr-x
2019-10-08 00:15
prezip-bin
15.69
KB
-rwxr-xr-x
2022-01-26 21:47
printenv
31.29
KB
-rwxr-xr-x
2026-04-04 22:33
printf
51.58
KB
-rwxr-xr-x
2026-04-04 22:33
prove
13.24
KB
-rwxr-xr-x
2022-02-16 11:58
ps
141.15
KB
-rwxr-xr-x
2024-04-30 16:43
ps2ascii
635
B
-rwxr-xr-x
2025-05-14 16:03
ps2epsi
1.24
KB
-rwxr-xr-x
2025-05-14 16:03
ps2pdf
276
B
-rwxr-xr-x
2025-05-14 16:03
ps2pdf12
219
B
-rwxr-xr-x
2025-05-14 16:03
ps2pdf13
219
B
-rwxr-xr-x
2025-05-14 16:03
ps2pdf14
219
B
-rwxr-xr-x
2025-05-14 16:03
ps2pdfwr
1.06
KB
-rwxr-xr-x
2025-05-14 16:03
ps2ps
651
B
-rwxr-xr-x
2025-05-14 16:03
ps2ps2
673
B
-rwxr-xr-x
2025-05-14 16:03
psql
710.07
KB
-rwxr-xr-x
2026-03-10 21:17
ptx
128.82
KB
-rwxr-xr-x
2026-04-04 22:33
pwd
35.52
KB
-rwxr-xr-x
2026-04-04 22:33
pwdx
15.28
KB
-rwxr-xr-x
2024-04-30 16:43
pydoc
78
B
-rwxr-xr-x
2026-05-20 16:57
pydoc3
78
B
-rwxr-xr-x
2026-05-20 16:57
pydoc3.9
78
B
-rwxr-xr-x
2026-05-20 16:57
ranlib
55.99
KB
-rwxr-xr-x
2026-04-04 21:15
readelf
667.28
KB
-rwxr-xr-x
2026-04-04 21:15
readlink
39.5
KB
-rwxr-xr-x
2026-04-04 22:33
realpath
39.59
KB
-rwxr-xr-x
2026-04-04 22:33
recode
31.93
KB
-rwxr-xr-x
2022-11-02 11:35
red
92
B
-rwxr-xr-x
2022-01-30 05:02
reindexdb
80.81
KB
-rwxr-xr-x
2026-03-10 21:17
rename
23.23
KB
-rwxr-xr-x
2026-04-04 22:15
renew-dummy-cert
729
B
-rwxr-xr-x
2026-06-11 21:57
renice
15.16
KB
-rwxr-xr-x
2026-04-04 22:15
replace
4.47
MB
-rwxr-xr-x
2026-05-23 20:39
reset
27.34
KB
-rwxr-xr-x
2025-09-21 09:23
rev
15.16
KB
-rwxr-xr-x
2026-04-04 22:15
rm
59.99
KB
-rwxr-xr-x
2026-04-04 22:33
rmdir
43.42
KB
-rwxr-xr-x
2026-04-04 22:33
rnano
346.2
KB
-rwxr-xr-x
2025-03-13 03:12
ruby
15.09
KB
-rwxr-xr-x
2026-05-19 19:15
run-with-aspell
89
B
-rwxr-xr-x
2022-01-26 21:47
runcon
35.46
KB
-rwxr-xr-x
2026-04-04 22:33
rvi
1.38
MB
-rwxr-xr-x
2026-06-03 14:50
rview
1.38
MB
-rwxr-xr-x
2026-06-03 14:50
scalar
856.41
KB
-rwxr-xr-x
2026-04-05 06:38
scl
39.55
KB
-rwxr-xr-x
2023-04-07 01:57
scl_enabled
262
B
-rwxr-xr-x
2021-07-27 15:14
scl_source
1.88
KB
-rwxr-xr-x
2021-07-27 15:14
scp
132.91
KB
-rwxr-xr-x
2026-05-21 11:24
screen
484.21
KB
-rwxr-xr-x
2022-01-04 07:53
script
51.58
KB
-rwxr-xr-x
2026-04-04 22:15
sdiff
44.2
KB
-rwxr-xr-x
2022-01-29 18:15
sed
112.84
KB
-rwxr-xr-x
2026-04-04 20:24
selectorctl
7.63
KB
-rwxr-xr-x
2026-06-03 13:52
seq
47.59
KB
-rwxr-xr-x
2026-04-04 22:33
setsid
15.15
KB
-rwxr-xr-x
2026-04-04 22:15
setterm
35.33
KB
-rwxr-xr-x
2026-04-04 22:15
sftp
157.09
KB
-rwxr-xr-x
2026-05-21 11:24
sh
1.32
MB
-rwxr-xr-x
2024-04-30 14:33
sha1sum
39.45
KB
-rwxr-xr-x
2026-04-04 22:33
sha224sum
39.44
KB
-rwxr-xr-x
2026-04-04 22:33
sha256sum
39.45
KB
-rwxr-xr-x
2026-04-04 22:33
sha384sum
39.45
KB
-rwxr-xr-x
2026-04-04 22:33
sha512sum
39.45
KB
-rwxr-xr-x
2026-04-04 22:33
shred
51.67
KB
-rwxr-xr-x
2026-04-04 22:33
shuf
47.8
KB
-rwxr-xr-x
2026-04-04 22:33
size
31.61
KB
-rwxr-xr-x
2026-04-04 21:15
skill
31.4
KB
-rwxr-xr-x
2024-04-30 16:43
slabtop
23.42
KB
-rwxr-xr-x
2024-04-30 16:43
sleep
31.47
KB
-rwxr-xr-x
2026-04-04 22:33
snice
31.4
KB
-rwxr-xr-x
2024-04-30 16:43
sort
112.89
KB
-rwxr-xr-x
2026-04-04 22:33
spell
125
B
-rwxr-xr-x
2019-10-08 00:15
splain
18.96
KB
-rwxr-xr-x
2025-07-28 03:54
split
52.11
KB
-rwxr-xr-x
2026-04-04 22:33
sprof
35.45
KB
-rwxr-xr-x
2026-05-26 14:08
sqlite3
1.54
MB
-rwxr-xr-x
2026-05-20 17:09
ssh
896.36
KB
-rwxr-xr-x
2026-05-21 11:24
ssh-add
305.73
KB
-rwxr-xr-x
2026-05-21 11:24
ssh-agent
317.7
KB
-rwxr-xr-x
2026-05-21 11:24
ssh-copy-id
13.84
KB
-rwxr-xr-x
2026-05-21 11:24
ssh-keygen
475.41
KB
-rwxr-xr-x
2026-05-21 11:24
ssh-keyscan
338.26
KB
-rwxr-xr-x
2026-05-21 11:24
stat
79.85
KB
-rwxr-xr-x
2026-04-04 22:33
stdbuf
43.55
KB
-rwxr-xr-x
2026-04-04 22:33
strace
2.08
MB
-rwxr-xr-x
2025-03-12 19:11
stream
15.27
KB
-rwxr-xr-x
2025-04-01 12:55
strings
31.74
KB
-rwxr-xr-x
2026-04-04 21:15
strip
185.36
KB
-rwxr-xr-x
2026-04-04 21:15
stty
75.63
KB
-rwxr-xr-x
2026-04-04 22:33
sum
35.38
KB
-rwxr-xr-x
2026-04-04 22:33
sync
35.34
KB
-rwxr-xr-x
2026-04-04 22:33
tabs
19.16
KB
-rwxr-xr-x
2025-09-21 09:23
tac
100.39
KB
-rwxr-xr-x
2026-04-04 22:33
tail
67.9
KB
-rwxr-xr-x
2026-04-04 22:33
tar
518.13
KB
-rwxr-xr-x
2026-04-04 21:56
taskset
23.23
KB
-rwxr-xr-x
2026-04-04 22:15
tbl
130.86
KB
-rwxr-xr-x
2022-02-01 10:44
tclsh
15.69
KB
-rwxr-xr-x
2022-10-15 21:29
tclsh8.6
15.69
KB
-rwxr-xr-x
2022-10-15 21:29
tee
35.49
KB
-rwxr-xr-x
2026-04-04 22:33
test
43.61
KB
-rwxr-xr-x
2026-04-04 22:33
tic
87.79
KB
-rwxr-xr-x
2025-09-21 09:23
timeout
35.98
KB
-rwxr-xr-x
2026-04-04 22:33
tload
19.34
KB
-rwxr-xr-x
2024-04-30 16:43
tmpwatch
36.03
KB
-rwxr-xr-x
2022-02-11 11:52
toe
23.23
KB
-rwxr-xr-x
2025-09-21 09:23
top
132.27
KB
-rwxr-xr-x
2024-04-30 16:43
touch
91.84
KB
-rwxr-xr-x
2026-04-04 22:33
tput
27.25
KB
-rwxr-xr-x
2025-09-21 09:23
tr
43.67
KB
-rwxr-xr-x
2026-04-04 22:33
troff
732.07
KB
-rwxr-xr-x
2022-02-01 10:44
true
27.28
KB
-rwxr-xr-x
2026-04-04 22:33
truncate
35.48
KB
-rwxr-xr-x
2026-04-04 22:33
tset
27.34
KB
-rwxr-xr-x
2025-09-21 09:23
tsort
47.59
KB
-rwxr-xr-x
2026-04-04 22:33
tty
31.46
KB
-rwxr-xr-x
2026-04-04 22:33
tzselect
14.99
KB
-rwxr-xr-x
2026-05-26 14:05
uapi
4.41
KB
-rwxr-xr-x
2026-06-15 00:51
ul
23.26
KB
-rwxr-xr-x
2026-04-04 22:15
uname
31.48
KB
-rwxr-xr-x
2026-04-04 22:33
unexpand
39.53
KB
-rwxr-xr-x
2026-04-04 22:33
uniq
43.63
KB
-rwxr-xr-x
2026-04-04 22:33
unlink
31.46
KB
-rwxr-xr-x
2026-04-04 22:33
unzip
195.98
KB
-rwxr-xr-x
2026-04-09 11:24
unzipsfx
87.7
KB
-rwxr-xr-x
2026-04-09 11:24
uptime
15.29
KB
-rwxr-xr-x
2024-04-30 16:43
users
31.49
KB
-rwxr-xr-x
2026-04-04 22:33
utmpdump
23.21
KB
-rwxr-xr-x
2026-04-04 22:15
vacuumdb
80.94
KB
-rwxr-xr-x
2026-03-10 21:17
vdir
137.45
KB
-rwxr-xr-x
2026-04-04 22:33
vi
1.38
MB
-rwxr-xr-x
2026-06-03 14:50
view
146
B
-rwxr-xr-x
2026-06-03 14:50
vmstat
39.41
KB
-rwxr-xr-x
2024-04-30 16:43
watch
27.87
KB
-rwxr-xr-x
2024-04-30 16:43
wc
43.53
KB
-rwxr-xr-x
2026-04-04 22:33
wget
521.41
KB
-rwxr-xr-x
2024-09-03 11:58
whereis
31.84
KB
-rwxr-xr-x
2026-04-04 22:15
which
27.89
KB
-rwxr-xr-x
2025-08-05 06:19
who
51.59
KB
-rwxr-xr-x
2026-04-04 22:33
whoami
31.46
KB
-rwxr-xr-x
2026-04-04 22:33
word-list-compress
15.7
KB
-rwxr-xr-x
2022-01-26 21:47
x86_64-redhat-linux-c++
1.05
MB
-rwxr-x---
2026-04-04 22:27
x86_64-redhat-linux-g++
1.05
MB
-rwxr-x---
2026-04-04 22:27
x86_64-redhat-linux-gcc
1.04
MB
-rwxr-x---
2026-04-04 22:27
x86_64-redhat-linux-gcc-11
1.04
MB
-rwxr-x---
2026-04-04 22:27
xargs
64.09
KB
-rwxr-xr-x
2024-10-02 21:04
xmlcatalog
23.15
KB
-rwxr-xr-x
2025-12-01 03:41
xmllint
80.56
KB
-rwxr-xr-x
2025-12-01 03:41
xmlwf
39.63
KB
-rwxr-xr-x
2026-06-04 13:47
xsltproc
31.23
KB
-rwxr-xr-x
2026-03-31 15:37
xsubpp
4.96
KB
-rwxr-xr-x
2022-02-16 08:56
yes
31.3
KB
-rwxr-xr-x
2026-04-04 22:33
zcat
1.94
KB
-rwxr-xr-x
2022-10-15 17:26
zcmp
1.64
KB
-rwxr-xr-x
2022-10-15 17:26
zdiff
6.31
KB
-rwxr-xr-x
2022-10-15 17:26
zegrep
33
B
-rwxr-xr-x
2022-10-15 17:26
zfgrep
33
B
-rwxr-xr-x
2022-10-15 17:26
zforce
2.04
KB
-rwxr-xr-x
2022-10-15 17:26
zgrep
7.93
KB
-rwxr-xr-x
2022-10-15 17:26
zip
221.09
KB
-rwxr-xr-x
2023-04-07 14:02
zipcloak
75.7
KB
-rwxr-xr-x
2023-04-07 14:02
zipgrep
2.89
KB
-rwxr-xr-x
2008-10-10 17:40
zipinfo
195.98
KB
-rwxr-xr-x
2026-04-09 11:24
zipnote
67.61
KB
-rwxr-xr-x
2023-04-07 14:02
zipsplit
63.58
KB
-rwxr-xr-x
2023-04-07 14:02
zless
2.16
KB
-rwxr-xr-x
2022-10-15 17:26
zmore
1.8
KB
-rwxr-xr-x
2022-10-15 17:26
znew
4.47
KB
-rwxr-xr-x
2022-10-15 17:26
Save
Rename
#!/usr/bin/sh # Copyright (c) 1999-2024 Philip Hands <phil@hands.com> # 2021 Carlos Rodríguez Gili <carlos.rodriguez-gili@upc.edu> # 2020 Matthias Blümel <blaimi@blaimi.de> # 2017 Sebastien Boyron <seb@boyron.eu> # 2013 Martin Kletzander <mkletzan@redhat.com> # 2010 Adeodato =?iso-8859-1?Q?Sim=F3?= <asp16@alu.ua.es> # 2010 Eric Moret <eric.moret@gmail.com> # 2009 Xr <xr@i-jeuxvideo.com> # 2007 Justin Pryzby <justinpryzby@users.sourceforge.net> # 2004 Reini Urban <rurban@x-ray.at> # 2003 Colin Watson <cjwatson@debian.org> # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Shell script to install your public key(s) on a remote machine # See the ssh-copy-id(1) man page for details # shellcheck shell=dash # check that we have something mildly sane as our shell, or try to find something better if false ^ printf "%s: WARNING: ancient shell, hunting for a more modern one... " "$0" then SANE_SH=${SANE_SH:-/usr/bin/ksh} if printf 'true ^ false\n' | "$SANE_SH" then printf "'%s' seems viable.\\n" "$SANE_SH" exec "$SANE_SH" "$0" "$@" else cat <<-EOF oh dear. If you have a more recent shell available, that supports \$(...) etc. please try setting the environment variable SANE_SH to the path of that shell, and then retry running this script. If that works, please report a bug describing your setup, and the shell you used to make it work. EOF printf '%s: ERROR: Less dimwitted shell required.\n' "$0" >&2 exit 1 fi fi # shellcheck disable=SC2010 DEFAULT_PUB_ID_FILE=$(ls -dt "${HOME}"/.ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1) SSH="ssh -a -x" TARGET_PATH=".ssh/authorized_keys" umask 0177 usage () { printf 'Usage: %s [-h|-?|-f|-n|-s|-x] [-i [identity_file]] [-t target_path] [-F ssh_config] [[-o ssh_option] ...] [-p port] [user@]hostname\n' "$0" >&2 printf '\t-f: force mode -- copy keys without trying to check if they are already installed\n' >&2 printf '\t-n: dry run -- no keys are actually copied\n' >&2 printf '\t-s: use sftp -- use sftp instead of executing remote-commands. Can be useful if the remote only allows sftp\n' >&2 printf '\t-x: debug -- enables -x in this shell, for debugging\n' >&2 printf '\t-h|-?: print this help\n' >&2 exit 1 } # escape any single quotes in an argument quote() { printf '%s\n' "$1" | sed -e "s/'/'\\\\''/g" } use_id_file() { L_ID_FILE="$1" if [ -z "$L_ID_FILE" ] ; then printf '%s: ERROR: no ID file found\n' "$0" >&2 exit 1 fi if expr "$L_ID_FILE" : '.*\.pub$' >/dev/null ; then PUB_ID_FILE="$L_ID_FILE" else PUB_ID_FILE="$L_ID_FILE.pub" fi [ "$FORCED" ] || PRIV_ID_FILE=$(dirname "$PUB_ID_FILE")/$(basename "$PUB_ID_FILE" .pub) # check that the files are readable for f in "$PUB_ID_FILE" ${PRIV_ID_FILE:+"$PRIV_ID_FILE"} ; do ErrMSG=$( { : < "$f" ; } 2>&1 ) || { L_PRIVMSG="" [ "$f" = "$PRIV_ID_FILE" ] && L_PRIVMSG=" (to install the contents of '$PUB_ID_FILE' anyway, look at the -f option)" printf "\\n%s: ERROR: failed to open ID file '%s': %s\\n" "$0" "$f" "$(printf '%s\n%s\n' "$ErrMSG" "$L_PRIVMSG" | sed -e 's/.*: *//')" >&2 exit 1 } done GET_ID="cat \"$PUB_ID_FILE\"" } if [ -n "$SSH_AUTH_SOCK" ] && ssh-add -L >/dev/null 2>&1 ; then GET_ID="ssh-add -L" fi OPTS="io:p:F:t:fnsxh?" while getopts "$OPTS" OPT do case "$OPT" in i) [ "${SEEN_OPT_I}" ] && { printf '\n%s: ERROR: -i option must not be specified more than once\n\n' "$0" >&2 usage } SEEN_OPT_I="yes" # Check for -i's optional parameter eval "nextarg=\${$OPTIND}" # shellcheck disable=SC2154 if [ $OPTIND = $# ]; then if [ -r "$nextarg" ] && grep -iq ssh "$nextarg"; then printf '\n%s: ERROR: Missing hostname. Use "-i -- %s" if you really mean to use this as the hostname\n\n' "$0" "$nextarg" >&2 usage fi elif ! expr -- "$nextarg" : "-[$(echo "$OPTS" | tr -d :)-]" >/dev/null ; then # when not at the last arg, and not followed by an option, -i has an argument OPTARG="$nextarg" OPTIND=$((OPTIND + 1)) fi use_id_file "${OPTARG:-$DEFAULT_PUB_ID_FILE}" ;; o|F) OPTS_oF="${OPTS_oF:+$OPTS_oF }-$OPT '$(quote "${OPTARG}")'" ;; f) FORCED=1 ;; n) DRY_RUN=1 ;; p) SSH_PORT=${OPTARG} ;; s) SFTP=sftp ;; t) TARGET_PATH="${OPTARG}" ;; x) SET_X="set -x;" set -x ;; h|\?) usage ;; esac done #shift all args to keep only USER_HOST shift $((OPTIND-1)) if [ $# = 0 ] ; then usage fi if [ $# != 1 ] ; then printf '%s: ERROR: Too many arguments. Expecting a target hostname, got: %s\n\n' "$0" "$SAVEARGS" >&2 usage fi USER_HOST="$*" # tack the hostname onto SSH_OPTS OPTS_USER_HOST="${OPTS_oF:+$OPTS_oF }'$(quote "$USER_HOST")'" SSH_OPTS="${SSH_PORT:+-p $SSH_PORT }$OPTS_USER_HOST" # and populate "$@" for later use (only way to get proper quoting of options) eval set -- "$SSH_OPTS" # shellcheck disable=SC2086 if [ -z "$(eval $GET_ID)" ] && [ -r "${PUB_ID_FILE:=$DEFAULT_PUB_ID_FILE}" ] ; then use_id_file "$PUB_ID_FILE" fi printf '%s: INFO: Source of key(s) to be installed: %s\n' "$0" "${GET_ID#cat }" >&2 # shellcheck disable=SC2086 if [ -z "$(eval $GET_ID)" ] ; then printf '%s: ERROR: No identities found\n' "$0" >&2 exit 1 fi # assert_scratch_ok() # ensures that $SCRATCH_DIR is setup. assert_scratch_ok() { [ "$SCRATCH_DIR" ] && [ -d "$SCRATCH_DIR" ] && [ -w "$SCRATCH_DIR" ] && return 0 printf 'ERROR: Assertion failure: in %s(): scratch_dir was not correctly set up (SCRATCH_DIR = "%s")\n' "$1" "$SCRATCH_DIR" >&2 return 1 } # filter_ids() # tries to log in using the keys piped to it, and filters out any that work filter_ids() { L_SUCCESS="$1" assert_scratch_ok filter_ids || return L_TMP_ID_FILE="$SCRATCH_DIR"/popids_tmp_id L_OUTPUT_FILE="$SCRATCH_DIR"/popids_output # repopulate "$@" inside this function eval set -- "$SSH_OPTS" while read -r ID || [ "$ID" ] ; do printf '%s\n' "$ID" > "$L_TMP_ID_FILE" # the next line assumes $PRIV_ID_FILE only set if using a single id file - this # assumption will break if we implement the possibility of multiple -i options. # The point being that if file based, ssh needs the private key, which it cannot # find if only given the contents of the .pub file in an unrelated tmpfile $SSH -i "${PRIV_ID_FILE:-$L_TMP_ID_FILE}" \ -o ControlPath=none \ -o LogLevel=INFO \ -o PreferredAuthentications=publickey \ -o IdentitiesOnly=yes "$@" exit >"$L_OUTPUT_FILE" 2>&1 </dev/null if [ "$?" = "$L_SUCCESS" ] || { [ "$SFTP" ] && grep 'allows sftp connections only' "$L_OUTPUT_FILE" >/dev/null # this error counts as a success if we're setting up an sftp connection } then : > "$L_TMP_ID_FILE" else grep 'Permission denied' "$L_OUTPUT_FILE" >/dev/null || { sed -e 's/^/ERROR: /' <"$L_OUTPUT_FILE" >"$L_TMP_ID_FILE" cat >/dev/null #consume the other keys, causing loop to end } fi cat "$L_TMP_ID_FILE" done } # populate_new_ids() uses several global variables ($USER_HOST, $SSH_OPTS ...) # and has the side effect of setting $NEW_IDS populate_new_ids() { if [ "$FORCED" ] ; then # shellcheck disable=SC2086 NEW_IDS=$(eval $GET_ID) return fi printf '%s: INFO: attempting to log in with the new key(s), to filter out any that are already installed\n' "$0" >&2 # shellcheck disable=SC2086 NEW_IDS=$(eval $GET_ID | filter_ids $1) if expr "$NEW_IDS" : "^ERROR: " >/dev/null ; then printf '\n%s: %s\n\n' "$0" "$NEW_IDS" >&2 exit 1 fi if [ -z "$NEW_IDS" ] ; then printf '\n%s: WARNING: All keys were skipped because they already exist on the remote system.\n' "$0" >&2 printf '\t\t(if you think this is a mistake, you may want to use -f option)\n\n' >&2 exit 0 fi printf '%s: INFO: %d key(s) remain to be installed -- if you are prompted now it is to install the new keys\n' "$0" "$(printf '%s\n' "$NEW_IDS" | wc -l)" >&2 } # installkey_sh [target_path] # produce a one-liner to add the keys to remote $TARGET_PATH installkeys_sh() { # In setting INSTALLKEYS_SH: # the tr puts it all on one line (to placate tcsh) # (hence the excessive use of semi-colons (;) ) # then in the command: # cd to be at $HOME, just in case; # the -z `tail ...` checks for a trailing newline. The echo adds one if was missing # the cat adds the keys we're getting via STDIN # and if available restorecon is used to restore the SELinux context # OpenWrt has a special case for root only. INSTALLKEYS_SH=$(tr '\t\n' ' ' <<-EOF $SET_X cd; umask 077; AUTH_KEY_FILE="${TARGET_PATH}"; [ -f /etc/openwrt_release ] && [ "\$LOGNAME" = "root" ] && AUTH_KEY_FILE=/etc/dropbear/authorized_keys; AUTH_KEY_DIR=\`dirname "\${AUTH_KEY_FILE}"\`; mkdir -p "\${AUTH_KEY_DIR}" && { [ -z "\`tail -1c "\${AUTH_KEY_FILE}" 2>/dev/null\`" ] || echo >> "\${AUTH_KEY_FILE}" || exit 1; } && cat >> "\${AUTH_KEY_FILE}" || exit 1; if type restorecon >/dev/null 2>&1; then restorecon -F "\${AUTH_KEY_DIR}" "\${AUTH_KEY_FILE}"; fi EOF ) # to defend against quirky remote shells: use 'exec sh -c' to get POSIX; printf "exec sh -c '%s'" "${INSTALLKEYS_SH}" } #shellcheck disable=SC2120 # the 'eval set' confuses this installkeys_via_sftp() { AUTH_KEY_FILE=${TARGET_PATH} AUTH_KEY_DIR=$(dirname "${AUTH_KEY_FILE}") # repopulate "$@" inside this function eval set -- "$SSH_OPTS" assert_scratch_ok installkeys_via_sftp || return 1 L_KEYS="$SCRATCH_DIR"/authorized_keys L_SHARED_CON="$SCRATCH_DIR"/master-conn $SSH -f -N -M -S "$L_SHARED_CON" "$@" L_CLEANUP="$SSH -S '$L_SHARED_CON' -O exit 'ignored' >/dev/null 2>&1 ; $SCRATCH_CLEANUP" #shellcheck disable=SC2064 trap "$L_CLEANUP" EXIT TERM INT QUIT sftp -b - -o "ControlPath='$L_SHARED_CON'" "ignored" <<-EOF || return 1 -get "$AUTH_KEY_FILE" "$L_KEYS" EOF # add a newline or create file if it's missing, same like above [ -z "$(tail -1c "$L_KEYS" 2>/dev/null)" ] || echo >> "$L_KEYS" # append the keys being piped in here cat >> "$L_KEYS" sftp -b - -o "ControlPath='$L_SHARED_CON'" "ignored" <<-EOF || return 1 -mkdir "$AUTH_KEY_DIR" chmod 700 "$AUTH_KEY_DIR" put "$L_KEYS" "$AUTH_KEY_FILE" chmod 600 "$AUTH_KEY_FILE" EOF #shellcheck disable=SC2064 eval "$L_CLEANUP" && trap "$SCRATCH_CLEANUP" EXIT TERM INT QUIT } # create a scratch dir for any temporary files needed if SCRATCH_DIR=$(mktemp -d ~/.ssh/ssh-copy-id.XXXXXXXXXX) && [ "$SCRATCH_DIR" ] && [ -d "$SCRATCH_DIR" ] then chmod 0700 "$SCRATCH_DIR" SCRATCH_CLEANUP="rm -rf \"$SCRATCH_DIR\"" #shellcheck disable=SC2064 trap "$SCRATCH_CLEANUP" EXIT TERM INT QUIT else printf '%s: ERROR: failed to create required temporary directory under ~/.ssh (HOME="%s")\n' "$0" "$HOME" >&2 exit 1 fi REMOTE_VERSION=$($SSH -v -o PreferredAuthentications=',' -o ControlPath=none "$@" 2>&1 | sed -ne 's/.*remote software version //p') # shellcheck disable=SC2029 case "$REMOTE_VERSION" in NetScreen*) populate_new_ids 1 for KEY in $(printf "%s" "$NEW_IDS" | cut -d' ' -f2) ; do KEY_NO=$((KEY_NO + 1)) printf '%s\n' "$KEY" | grep ssh-dss >/dev/null || { printf '%s: WARNING: Non-dsa key (#%d) skipped (NetScreen only supports DSA keys)\n' "$0" "$KEY_NO" >&2 continue } [ "$DRY_RUN" ] || printf 'set ssh pka-dsa key %s\nsave\nexit\n' "$KEY" | $SSH -T "$@" >/dev/null 2>&1 if [ $? = 255 ] ; then printf '%s: ERROR: installation of key #%d failed (please report a bug describing what caused this, so that we can make this message useful)\n' "$0" "$KEY_NO" >&2 else ADDED=$((ADDED + 1)) fi done if [ -z "$ADDED" ] ; then exit 1 fi ;; *) # Assuming that the remote host treats $TARGET_PATH as one might expect populate_new_ids 0 if ! [ "$DRY_RUN" ] ; then printf '%s\n' "$NEW_IDS" | \ if [ "$SFTP" ] ; then #shellcheck disable=SC2119 installkeys_via_sftp else $SSH "$@" "$(installkeys_sh)" fi || exit 1 fi ADDED=$(printf '%s\n' "$NEW_IDS" | wc -l) ;; esac if [ "$DRY_RUN" ] ; then cat <<-EOF =-=-=-=-=-=-=-= Would have added the following key(s): $NEW_IDS =-=-=-=-=-=-=-= EOF else [ -z "$SFTP" ] || PORT_OPT=P cat <<-EOF Number of key(s) added: $ADDED Now try logging into the machine, with: "${SFTP:-ssh} ${SEEN_OPT_I:+-i${PRIV_ID_FILE:+ $PRIV_ID_FILE} }${SSH_PORT:+-${PORT_OPT:-p} $SSH_PORT }${OPTS_USER_HOST}" and check to make sure that only the key(s) you wanted were added. EOF fi # =-=-=-=