OXIESEC PANEL
- Current Dir:
/
/
usr
/
bin
Server IP: 103.185.75.71
Upload:
Create Dir:
Name
Size
Modified
Perms
π
..
-
03/12/2026 01:54:05 PM
rwxr-xr-x
π
GET
15.82 KB
03/25/2022 08:00:31 AM
rwxr-xr-x
π
Mail
0 bytes
01/01/1970 12:00:00 AM
---------
π
[
51.8 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
aclocal
35.52 KB
09/27/2023 12:16:24 PM
rwxr-xr-x
π
aclocal-1.16
35.52 KB
09/27/2023 12:16:24 PM
rwxr-xr-x
π
addr2line
27.74 KB
03/31/2025 10:32:50 AM
rwxr-xr-x
π
animate
15.27 KB
04/01/2025 12:55:20 PM
rwxr-xr-x
π
ar
55.98 KB
03/31/2025 10:32:50 AM
rwxr-xr-x
π
arch
31.66 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
arpaname
15.11 KB
11/10/2025 03:35:46 AM
rwxr-xr-x
π
as
710.31 KB
03/31/2025 10:32:50 AM
rwxr-xr-x
π
aspell
151.12 KB
01/26/2022 09:47:25 PM
rwxr-xr-x
π
at
1.02 KB
08/05/2025 06:15:39 AM
rwxr-xr-x
π
atq
1.02 KB
08/05/2025 06:15:39 AM
rwxr-xr-x
π
atrm
1.02 KB
08/05/2025 06:15:39 AM
rwxr-xr-x
π
autoconf
14.42 KB
10/02/2024 08:06:28 PM
rwxr-xr-x
π
autoheader
8.33 KB
10/02/2024 08:06:28 PM
rwxr-xr-x
π
autom4te
31.43 KB
10/02/2024 08:06:28 PM
rwxr-xr-x
π
automake
251.93 KB
09/27/2023 12:16:24 PM
rwxr-xr-x
π
automake-1.16
251.93 KB
09/27/2023 12:16:24 PM
rwxr-xr-x
π
autoreconf
20.57 KB
10/02/2024 08:06:28 PM
rwxr-xr-x
π
autoscan
16.72 KB
10/02/2024 08:06:28 PM
rwxr-xr-x
π
autoupdate
33.08 KB
10/02/2024 08:06:28 PM
rwxr-xr-x
π
awk
698.17 KB
03/30/2022 10:25:28 PM
rwxr-xr-x
π
b2sum
51.79 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
base32
35.69 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
base64
35.7 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
basename
35.67 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
basenc
48.02 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
bash
1.32 MB
04/30/2024 02:33:56 PM
rwxr-xr-x
π
bashbug-64
6.91 KB
04/30/2024 02:33:47 PM
rwxr-xr-x
π
batch
140 bytes
08/05/2025 06:15:38 AM
rwxr-xr-x
π
bison
494.76 KB
01/27/2022 12:15:31 AM
rwxr-xr-x
π
bunzip2
39.62 KB
02/04/2025 03:42:48 AM
rwxr-xr-x
π
bzcat
39.62 KB
02/04/2025 03:42:48 AM
rwxr-xr-x
π
bzcmp
2.09 KB
02/04/2025 03:42:48 AM
rwxr-xr-x
π
bzdiff
2.09 KB
02/04/2025 03:42:48 AM
rwxr-xr-x
π
bzgrep
2.01 KB
02/04/2025 03:42:48 AM
rwxr-xr-x
π
bzip2
39.62 KB
02/04/2025 03:42:48 AM
rwxr-xr-x
π
bzip2recover
15.4 KB
02/04/2025 03:42:48 AM
rwxr-xr-x
π
bzless
1.23 KB
02/04/2025 03:42:48 AM
rwxr-xr-x
π
bzmore
1.23 KB
02/04/2025 03:42:48 AM
rwxr-xr-x
π
c++
1.04 MB
02/12/2025 01:11:11 PM
rwxr-xr-x
π
c++filt
27.18 KB
03/31/2025 10:32:50 AM
rwxr-xr-x
π
c89
228 bytes
02/12/2025 01:07:17 PM
rwxr-xr-x
π
c99
219 bytes
02/12/2025 01:07:17 PM
rwxr-xr-x
π
cagefs_enter.proxied
1.04 KB
05/26/2025 11:09:33 AM
rwxr-xr-x
π
cal
52.01 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
captoinfo
87.8 KB
08/05/2025 09:46:00 AM
rwxr-xr-x
π
cat
35.66 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
catchsegv
3.21 KB
11/05/2025 09:31:15 AM
rwxr-xr-x
π
cc
1.04 MB
02/12/2025 01:11:11 PM
rwxr-xr-x
π
chcon
60.24 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
chgrp
56.19 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
chmod
56.16 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
chown
60.19 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
chrt
27.48 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
cksum
35.57 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
cldetect
10.35 KB
09/29/2025 11:30:11 PM
rwxr-xr-x
π
clear
15.16 KB
08/05/2025 09:46:00 AM
rwxr-xr-x
π
cloudlinux-awp-user
1.78 KB
07/02/2025 03:43:45 PM
rwxr-xr-x
π
clwpos-user
1.78 KB
07/02/2025 03:43:45 PM
rwxr-xr-x
π
cmp
40.13 KB
01/29/2022 06:15:51 PM
rwxr-xr-x
π
col
23.41 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
colcrt
15.38 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
colrm
15.36 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
column
35.52 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
comm
35.75 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
compare
15.27 KB
04/01/2025 12:55:20 PM
rwxr-xr-x
π
composite
15.27 KB
04/01/2025 12:55:20 PM
rwxr-xr-x
π
conjure
15.27 KB
04/01/2025 12:55:20 PM
rwxr-xr-x
π
convert
15.27 KB
04/01/2025 12:55:20 PM
rwxr-xr-x
π
cp
149.24 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
cpan
8.37 KB
05/13/2025 09:00:14 PM
rwxr-xr-x
π
cpp
1.04 MB
02/12/2025 01:11:11 PM
rwxr-xr-x
π
crontab
1.49 KB
08/05/2025 06:13:26 AM
rwxr-xr-x
π
crontab.cagefs
40.47 KB
06/23/2025 12:21:56 PM
rwxr-xr-x
π
csplit
108.88 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
curl
248.49 KB
08/05/2025 06:19:17 AM
rwxr-xr-x
π
cut
47.8 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
cyrusbdb2current
1.58 MB
04/10/2023 02:10:39 PM
rwxr-xr-x
π
date
104.05 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
dd
68.14 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
delv
45.38 KB
11/10/2025 03:35:46 AM
rwxr-xr-x
π
df
84.73 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
diff
194.7 KB
01/29/2022 06:15:51 PM
rwxr-xr-x
π
diff3
52.3 KB
01/29/2022 06:15:51 PM
rwxr-xr-x
π
dig
136.59 KB
11/10/2025 03:35:46 AM
rwxr-xr-x
π
dir
137.65 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
dircolors
39.8 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
dirname
31.48 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
display
15.27 KB
04/01/2025 12:55:20 PM
rwxr-xr-x
π
dnstap-read
23.19 KB
11/10/2025 03:35:46 AM
rwxr-xr-x
π
du
149.44 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
echo
35.48 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
ed
52.51 KB
01/30/2022 05:02:01 AM
rwxr-xr-x
π
egrep
32 bytes
01/31/2022 08:22:32 PM
rwxr-xr-x
π
enc2xs
40.69 KB
02/11/2022 04:42:02 PM
rwxr-xr-x
π
enchant
23.73 KB
01/30/2022 11:02:06 AM
rwxr-xr-x
π
enchant-lsmod
15.8 KB
01/30/2022 11:02:06 AM
rwxr-xr-x
π
env
44.23 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
eps2eps
643 bytes
05/14/2025 04:03:24 PM
rwxr-xr-x
π
eqn
189.52 KB
02/01/2022 10:44:53 AM
rwxr-xr-x
π
ex
1.38 MB
10/14/2025 09:11:29 AM
rwxr-xr-x
π
expand
39.73 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
expr
108.6 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
factor
72.05 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
false
27.47 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
fc-cache
139 bytes
01/23/2023 03:48:20 PM
rwxr-xr-x
π
fc-cache-64
23.17 KB
01/23/2023 07:48:35 PM
rwxr-xr-x
π
fc-cat
19.16 KB
01/23/2023 07:48:35 PM
rwxr-xr-x
π
fc-conflist
15.13 KB
01/23/2023 07:48:35 PM
rwxr-xr-x
π
fc-list
15.13 KB
01/23/2023 07:48:35 PM
rwxr-xr-x
π
fc-match
15.13 KB
01/23/2023 07:48:35 PM
rwxr-xr-x
π
fc-pattern
15.14 KB
01/23/2023 07:48:35 PM
rwxr-xr-x
π
fc-query
15.13 KB
01/23/2023 07:48:35 PM
rwxr-xr-x
π
fc-scan
15.14 KB
01/23/2023 07:48:35 PM
rwxr-xr-x
π
fc-validate
15.14 KB
01/23/2023 07:48:35 PM
rwxr-xr-x
π
fgrep
32 bytes
01/31/2022 08:22:32 PM
rwxr-xr-x
π
file
27.74 KB
04/03/2024 12:38:13 PM
rwxr-xr-x
π
find
284.95 KB
10/02/2024 09:04:59 PM
rwxr-xr-x
π
flex
412.64 KB
01/30/2022 08:23:38 AM
rwxr-xr-x
π
flex++
412.64 KB
01/30/2022 08:23:38 AM
rwxr-xr-x
π
flock
23.56 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
fmt
39.77 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
fold
39.71 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
free
23.36 KB
04/30/2024 04:43:23 PM
rwxr-xr-x
π
freetype-config
4.32 KB
03/31/2025 03:40:24 PM
rwxr-xr-x
π
funzip
31.42 KB
03/18/2025 03:53:48 AM
rwxr-xr-x
π
g++
1.04 MB
02/12/2025 01:11:11 PM
rwxr-xr-x
π
gawk
698.17 KB
03/30/2022 10:25:28 PM
rwxr-xr-x
π
gcc
1.04 MB
02/12/2025 01:11:11 PM
rwxr-xr-x
π
gcc-ar
27.81 KB
02/12/2025 01:11:11 PM
rwxr-xr-x
π
gcc-nm
27.8 KB
02/12/2025 01:11:11 PM
rwxr-xr-x
π
gcc-ranlib
27.82 KB
02/12/2025 01:11:11 PM
rwxr-xr-x
π
gcov
468.98 KB
02/12/2025 01:11:12 PM
rwxr-xr-x
π
gcov-dump
283.74 KB
02/12/2025 01:11:12 PM
rwxr-xr-x
π
gcov-tool
312.46 KB
02/12/2025 01:11:12 PM
rwxr-xr-x
π
gem
542 bytes
05/06/2025 04:04:18 AM
rwxr-xr-x
π
gencat
27.45 KB
11/05/2025 09:33:47 AM
rwxr-xr-x
π
geoiplookup
15.87 KB
11/23/2022 04:40:51 PM
rwxr-xr-x
π
geoiplookup6
15.82 KB
11/23/2022 04:40:51 PM
rwxr-xr-x
π
geqn
189.52 KB
02/01/2022 10:44:53 AM
rwxr-xr-x
π
getconf
35.23 KB
11/05/2025 09:33:47 AM
rwxr-xr-x
π
getent
35.86 KB
11/05/2025 09:33:47 AM
rwxr-xr-x
π
getopt
23.45 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
ghostscript
15.13 KB
05/14/2025 04:03:33 PM
rwxr-xr-x
π
git
4.06 MB
07/21/2025 04:25:54 PM
rwxr-xr-x
π
git-receive-pack
4.06 MB
07/21/2025 04:25:54 PM
rwxr-xr-x
π
git-shell
770.68 KB
07/21/2025 04:25:54 PM
rwxr-xr-x
π
git-upload-archive
4.06 MB
07/21/2025 04:25:54 PM
rwxr-xr-x
π
git-upload-pack
4.06 MB
07/21/2025 04:25:54 PM
rwxr-xr-x
π
gm
15.67 KB
11/23/2022 05:49:37 PM
rwxr-xr-x
π
gmake
249.8 KB
04/02/2024 12:55:30 PM
rwxr-xr-x
π
gneqn
916 bytes
02/01/2022 10:44:38 AM
rwxr-xr-x
π
gnroff
3.21 KB
02/01/2022 10:44:38 AM
rwxr-xr-x
π
gpg
1.07 MB
09/26/2023 07:39:20 PM
rwxr-xr-x
π
gpg-agent
342.25 KB
09/26/2023 07:39:20 PM
rwxr-xr-x
π
gpg-error
36.1 KB
02/09/2022 11:24:31 PM
rwxr-xr-x
π
gpgsplit
27.49 KB
09/26/2023 07:39:20 PM
rwxr-xr-x
π
gpgv
295.42 KB
09/26/2023 07:39:20 PM
rwxr-xr-x
π
gpic
201.72 KB
02/01/2022 10:44:53 AM
rwxr-xr-x
π
gprof
101.48 KB
03/31/2025 10:32:50 AM
rwxr-xr-x
π
grep
154.49 KB
01/31/2022 08:22:36 PM
rwxr-xr-x
π
groff
96.77 KB
02/01/2022 10:44:53 AM
rwxr-xr-x
π
grops
167.26 KB
02/01/2022 10:44:53 AM
rwxr-xr-x
π
grotty
122.2 KB
02/01/2022 10:44:53 AM
rwxr-xr-x
π
groups
35.66 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
gs
15.13 KB
05/14/2025 04:03:33 PM
rwxr-xr-x
π
gsnd
281 bytes
05/14/2025 04:03:24 PM
rwxr-xr-x
π
gsoelim
0 bytes
01/01/1970 12:00:00 AM
---------
π
gtar
514.27 KB
10/02/2024 09:24:00 PM
rwxr-xr-x
π
gtbl
130.86 KB
02/01/2022 10:44:53 AM
rwxr-xr-x
π
gtroff
732.07 KB
02/01/2022 10:44:53 AM
rwxr-xr-x
π
gunzip
2.29 KB
10/15/2022 05:26:34 PM
rwxr-xr-x
π
gzexe
6.3 KB
10/15/2022 05:26:34 PM
rwxr-xr-x
π
gzip
89.63 KB
10/15/2022 05:26:34 PM
rwxr-xr-x
π
h2ph
28.69 KB
07/28/2025 03:54:48 AM
rwxr-xr-x
π
h2xs
59.5 KB
07/28/2025 03:53:49 AM
rwxr-xr-x
π
head
43.8 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
hexdump
51.59 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
host
108.58 KB
11/10/2025 03:35:46 AM
rwxr-xr-x
π
hostid
31.66 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
hostname
23.84 KB
02/14/2022 11:22:04 AM
rwxr-xr-x
π
hunspell
102.67 KB
01/31/2022 08:22:03 PM
rwxr-xr-x
π
iconv
64.09 KB
11/05/2025 09:33:47 AM
rwxr-xr-x
π
icu-config
205 bytes
07/29/2025 04:13:20 PM
rwxr-xr-x
π
icu-config-64
21.67 KB
07/29/2025 04:16:01 PM
rwxr-xr-x
π
icuinfo
15.49 KB
07/29/2025 04:17:08 PM
rwxr-xr-x
π
id
39.71 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
identify
15.27 KB
04/01/2025 12:55:20 PM
rwxr-xr-x
π
idn
36.46 KB
02/14/2022 03:33:03 PM
rwxr-xr-x
π
ifnames
4.03 KB
10/02/2024 08:06:28 PM
rwxr-xr-x
π
import
15.27 KB
04/01/2025 12:55:20 PM
rwxr-xr-x
π
infocmp
63.69 KB
08/05/2025 09:46:00 AM
rwxr-xr-x
π
infotocap
87.8 KB
08/05/2025 09:46:00 AM
rwxr-xr-x
π
install
149.29 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
instmodsh
4.1 KB
02/24/2022 09:56:25 AM
rwxr-xr-x
π
ionice
15.4 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
ipcrm
19.41 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
ipcs
39.52 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
isosize
15.34 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
ispell
992 bytes
10/08/2019 12:15:21 AM
rwxr-xr-x
π
join
51.9 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
kill
31.47 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
ld
1.71 MB
03/31/2025 10:32:51 AM
rwxr-xr-x
π
ld.bfd
1.71 MB
03/31/2025 10:32:51 AM
rwxr-xr-x
π
ldd
5.32 KB
11/05/2025 09:31:17 AM
rwxr-xr-x
π
less
197.9 KB
10/02/2024 08:38:47 PM
rwxr-xr-x
π
lessecho
15.37 KB
10/02/2024 08:38:47 PM
rwxr-xr-x
π
lesskey
24.8 KB
10/02/2024 08:38:47 PM
rwxr-xr-x
π
lesspipe.sh
3.5 KB
10/02/2024 07:31:20 PM
rwxr-xr-x
π
lex
412.64 KB
01/30/2022 08:23:38 AM
rwxr-xr-x
π
libnetcfg
15.41 KB
07/28/2025 03:54:48 AM
rwxr-xr-x
π
libtool
359.18 KB
10/01/2024 05:49:19 PM
rwxr-xr-x
π
libtoolize
126.17 KB
10/01/2024 05:49:19 PM
rwxr-xr-x
π
link
31.66 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
ln
60.16 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
locale
59.08 KB
11/05/2025 09:33:47 AM
rwxr-xr-x
π
localedef
314.05 KB
11/05/2025 09:33:47 AM
rwxr-xr-x
π
logger
36.16 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
login
43.62 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
logname
31.66 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
look
19.36 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
ls
137.64 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
lto-dump
26.58 MB
02/12/2025 01:11:12 PM
rwxr-xr-x
π
m4
240.4 KB
03/31/2022 07:28:13 AM
rwxr-xr-x
π
mail
0 bytes
01/01/1970 12:00:00 AM
---------
π
mailx
0 bytes
01/01/1970 12:00:00 AM
---------
π
make
249.8 KB
04/02/2024 12:55:30 PM
rwxr-xr-x
π
make-dummy-cert
614 bytes
02/11/2025 09:56:48 PM
rwxr-xr-x
π
mcookie
27.5 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
md5sum
39.64 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
mesg
15.33 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
mkdir
68.31 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
mkfifo
39.83 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
mknod
43.88 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
mktemp
39.8 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
mogrify
15.27 KB
04/01/2025 12:55:20 PM
rwxr-xr-x
π
montage
15.27 KB
04/01/2025 12:55:20 PM
rwxr-xr-x
π
more
43.63 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
mv
141.17 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
my_print_defaults
224.91 KB
09/24/2025 02:52:33 PM
rwxr-xr-x
π
mysql
7.15 MB
09/24/2025 02:52:39 PM
rwxr-xr-x
π
mysql_config
843 bytes
09/24/2025 02:05:53 PM
rwxr-xr-x
π
mysql_config-64
4.93 KB
09/24/2025 02:05:52 PM
rwxr-xr-x
π
mysqladmin
6.89 MB
09/24/2025 02:52:33 PM
rwxr-xr-x
π
mysqlbinlog
7.19 MB
09/24/2025 02:52:36 PM
rwxr-xr-x
π
mysqlcheck
6.9 MB
09/24/2025 02:52:36 PM
rwxr-xr-x
π
mysqldump
6.97 MB
09/24/2025 02:52:33 PM
rwxr-xr-x
π
mysqlimport
6.88 MB
09/24/2025 02:52:35 PM
rwxr-xr-x
π
mysqlshow
6.87 MB
09/24/2025 02:52:39 PM
rwxr-xr-x
π
namei
23.41 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
nano
346.2 KB
03/13/2025 03:12:50 AM
rwxr-xr-x
π
neqn
916 bytes
02/01/2022 10:44:38 AM
rwxr-xr-x
π
nice
35.67 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
nl
100.71 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
nm
44.71 KB
03/31/2025 10:32:51 AM
rwxr-xr-x
π
nohup
35.58 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
nproc
35.69 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
nroff
3.21 KB
02/01/2022 10:44:38 AM
rwxr-xr-x
π
nslookup
112.53 KB
11/10/2025 03:35:46 AM
rwxr-xr-x
π
nsupdate
71.8 KB
11/10/2025 03:35:46 AM
rwxr-xr-x
π
numfmt
55.83 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
objcopy
185.37 KB
03/31/2025 10:32:51 AM
rwxr-xr-x
π
objdump
413.09 KB
03/31/2025 10:32:51 AM
rwxr-xr-x
π
od
64.06 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
openssl
1.01 MB
02/11/2025 09:56:51 PM
rwxr-xr-x
π
pango-list
19.11 KB
04/07/2023 10:19:30 AM
rwxr-xr-x
π
pango-segmentation
19.13 KB
04/07/2023 10:19:30 AM
rwxr-xr-x
π
pango-view
60.17 KB
04/07/2023 10:19:30 AM
rwxr-xr-x
π
passenger
1.73 KB
11/23/2025 05:44:26 PM
rwxr-xr-x
π
passwd
1.02 KB
04/14/2022 02:45:09 PM
rwxr-xr-x
π
paste
35.58 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
patch
195.02 KB
03/25/2022 03:42:41 PM
rwxr-xr-x
π
pathchk
35.66 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
pdf2dsc
701 bytes
05/14/2025 04:03:24 PM
rwxr-xr-x
π
pdf2ps
913 bytes
05/14/2025 04:03:24 PM
rwxr-xr-x
π
perl
15.13 KB
07/28/2025 03:54:00 AM
rwxr-xr-x
π
perl5.32.1
15.13 KB
07/28/2025 03:54:00 AM
rwxr-xr-x
π
perlbug
43.81 KB
07/28/2025 03:54:48 AM
rwxr-xr-x
π
perldoc
118 bytes
02/14/2022 11:51:30 PM
rwxr-xr-x
π
perlivp
10.56 KB
07/28/2025 03:53:49 AM
rwxr-xr-x
π
perlml
14.49 KB
10/02/2025 07:40:19 PM
rwxr-xr-x
π
perlthanks
43.81 KB
07/28/2025 03:54:48 AM
rwxr-xr-x
π
pgrep
31.42 KB
04/30/2024 04:43:23 PM
rwxr-xr-x
π
php
937 bytes
07/01/2025 04:06:13 PM
rwxr-xr-x
π
pic
201.72 KB
02/01/2022 10:44:53 AM
rwxr-xr-x
π
piconv
8.08 KB
02/11/2022 04:42:02 PM
rwxr-xr-x
π
ping
76.51 KB
10/12/2025 12:11:15 AM
rwxr-xr-x
π
pinky
35.61 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
pkg-config
335 bytes
04/06/2023 08:27:13 PM
rwxr-xr-x
π
pkill
31.42 KB
04/30/2024 04:43:23 PM
rwxr-xr-x
π
pl2pm
4.43 KB
07/28/2025 03:54:16 AM
rwxr-xr-x
π
pmap
35.39 KB
04/30/2024 04:43:23 PM
rwxr-xr-x
π
pod2html
4.04 KB
07/28/2025 03:54:48 AM
rwxr-xr-x
π
pod2man
14.68 KB
03/25/2022 12:10:57 PM
rwxr-xr-x
π
pod2text
10.55 KB
03/25/2022 12:10:57 PM
rwxr-xr-x
π
pod2usage
4.01 KB
02/11/2022 04:01:30 PM
rwxr-xr-x
π
podchecker
3.57 KB
02/11/2022 07:01:35 PM
rwxr-xr-x
π
post-grohtml
199.76 KB
02/01/2022 10:44:53 AM
rwxr-xr-x
π
pr
72.28 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
pre-grohtml
92.92 KB
02/01/2022 10:44:53 AM
rwxr-xr-x
π
precat
5.53 KB
10/08/2019 12:15:21 AM
rwxr-xr-x
π
preunzip
5.53 KB
10/08/2019 12:15:21 AM
rwxr-xr-x
π
prezip
5.53 KB
10/08/2019 12:15:21 AM
rwxr-xr-x
π
prezip-bin
15.69 KB
01/26/2022 09:47:25 PM
rwxr-xr-x
π
printenv
31.47 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
printf
51.77 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
prove
13.24 KB
02/16/2022 11:58:05 AM
rwxr-xr-x
π
ps
141.15 KB
04/30/2024 04:43:23 PM
rwxr-xr-x
π
ps2ascii
635 bytes
05/14/2025 04:03:24 PM
rwxr-xr-x
π
ps2epsi
1.24 KB
05/14/2025 04:03:24 PM
rwxr-xr-x
π
ps2pdf
276 bytes
05/14/2025 04:03:24 PM
rwxr-xr-x
π
ps2pdf12
219 bytes
05/14/2025 04:03:24 PM
rwxr-xr-x
π
ps2pdf13
219 bytes
05/14/2025 04:03:24 PM
rwxr-xr-x
π
ps2pdf14
219 bytes
05/14/2025 04:03:24 PM
rwxr-xr-x
π
ps2pdfwr
1.06 KB
05/14/2025 04:03:24 PM
rwxr-xr-x
π
ps2ps
651 bytes
05/14/2025 04:03:24 PM
rwxr-xr-x
π
ps2ps2
673 bytes
05/14/2025 04:03:24 PM
rwxr-xr-x
π
ptx
129.03 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
pwd
35.7 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
pwdx
15.28 KB
04/30/2024 04:43:23 PM
rwxr-xr-x
π
pydoc
78 bytes
09/02/2025 07:04:27 AM
rwxr-xr-x
π
pydoc3
78 bytes
09/02/2025 07:04:27 AM
rwxr-xr-x
π
pydoc3.9
78 bytes
09/02/2025 07:04:27 AM
rwxr-xr-x
π
ranlib
56 KB
03/31/2025 10:32:51 AM
rwxr-xr-x
π
readelf
667.28 KB
03/31/2025 10:32:51 AM
rwxr-xr-x
π
readlink
39.69 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
realpath
39.77 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
recode
31.93 KB
11/02/2022 11:35:06 AM
rwxr-xr-x
π
red
92 bytes
01/30/2022 05:02:00 AM
rwxr-xr-x
π
rename
23.41 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
renew-dummy-cert
729 bytes
02/11/2025 09:56:48 PM
rwxr-xr-x
π
renice
15.36 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
reset
27.34 KB
08/05/2025 09:46:00 AM
rwxr-xr-x
π
rev
15.35 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
rm
60.21 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
rmdir
43.61 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
rnano
346.2 KB
03/13/2025 03:12:50 AM
rwxr-xr-x
π
ruby
15.27 KB
05/06/2025 03:53:09 AM
rwxr-xr-x
π
run-with-aspell
89 bytes
01/26/2022 09:47:11 PM
rwxr-xr-x
π
runcon
35.65 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
rvi
1.38 MB
10/14/2025 09:11:29 AM
rwxr-xr-x
π
rview
1.38 MB
10/14/2025 09:11:29 AM
rwxr-xr-x
π
rvim
3.84 MB
10/14/2025 09:11:29 AM
rwxr-xr-x
π
scalar
819.34 KB
07/21/2025 04:25:54 PM
rwxr-xr-x
π
scl
39.55 KB
04/07/2023 01:57:08 AM
rwxr-xr-x
π
scl_enabled
262 bytes
07/27/2021 03:14:26 PM
rwxr-xr-x
π
scl_source
1.88 KB
07/27/2021 03:14:26 PM
rwxr-xr-x
π
scp
133.06 KB
03/13/2025 01:04:20 PM
rwxr-xr-x
π
screen
484.21 KB
01/04/2022 07:53:04 AM
rwxr-xr-x
π
script
51.75 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
sdiff
44.2 KB
01/29/2022 06:15:51 PM
rwxr-xr-x
π
sed
114.01 KB
02/15/2022 10:36:52 AM
rwxr-xr-x
π
selectorctl
7.63 KB
07/11/2025 03:01:21 PM
rwxr-xr-x
π
seq
47.79 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
setsid
15.34 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
setterm
35.52 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
sftp
141.05 KB
03/13/2025 01:04:20 PM
rwxr-xr-x
π
sh
1.32 MB
04/30/2024 02:33:56 PM
rwxr-xr-x
π
sha1sum
39.64 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
sha224sum
39.64 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
sha256sum
39.64 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
sha384sum
39.64 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
sha512sum
39.64 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
shred
51.88 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
shuf
48.01 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
size
31.61 KB
03/31/2025 10:32:51 AM
rwxr-xr-x
π
skill
31.4 KB
04/30/2024 04:43:23 PM
rwxr-xr-x
π
slabtop
23.42 KB
04/30/2024 04:43:23 PM
rwxr-xr-x
π
sleep
35.65 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
snice
31.4 KB
04/30/2024 04:43:23 PM
rwxr-xr-x
π
soelim
0 bytes
01/01/1970 12:00:00 AM
---------
π
sort
113.09 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
spell
125 bytes
10/08/2019 12:15:21 AM
rwxr-xr-x
π
splain
18.96 KB
07/28/2025 03:54:48 AM
rwxr-xr-x
π
split
52.31 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
sprof
35.45 KB
11/05/2025 09:33:47 AM
rwxr-xr-x
π
sqlite3
1.52 MB
07/28/2025 09:55:38 PM
rwxr-xr-x
π
ssh
843.53 KB
03/13/2025 01:04:20 PM
rwxr-xr-x
π
ssh-add
164.86 KB
03/13/2025 01:04:20 PM
rwxr-xr-x
π
ssh-agent
281.02 KB
03/13/2025 01:04:20 PM
rwxr-xr-x
π
ssh-copy-id
12.38 KB
03/13/2025 01:04:18 PM
rwxr-xr-x
π
ssh-keygen
455.04 KB
03/13/2025 01:04:20 PM
rwxr-xr-x
π
ssh-keyscan
197.43 KB
03/13/2025 01:04:20 PM
rwxr-xr-x
π
stat
80.06 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
stdbuf
43.74 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
strace
2.08 MB
03/12/2025 07:11:27 PM
rwxr-xr-x
π
stream
15.27 KB
04/01/2025 12:55:20 PM
rwxr-xr-x
π
strings
31.74 KB
03/31/2025 10:32:51 AM
rwxr-xr-x
π
strip
185.36 KB
03/31/2025 10:32:51 AM
rwxr-xr-x
π
stty
75.83 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
sum
35.59 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
sync
35.54 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
tabs
19.16 KB
08/05/2025 09:46:00 AM
rwxr-xr-x
π
tac
104.6 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
tail
68.09 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
tar
514.27 KB
10/02/2024 09:24:00 PM
rwxr-xr-x
π
taskset
23.41 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
tbl
130.86 KB
02/01/2022 10:44:53 AM
rwxr-xr-x
π
tclsh
15.69 KB
10/15/2022 09:29:43 PM
rwxr-xr-x
π
tclsh8.6
15.69 KB
10/15/2022 09:29:43 PM
rwxr-xr-x
π
tee
35.69 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
test
43.79 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
tic
87.8 KB
08/05/2025 09:46:00 AM
rwxr-xr-x
π
timeout
40.17 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
tload
19.34 KB
04/30/2024 04:43:23 PM
rwxr-xr-x
π
tmpwatch
36.03 KB
02/11/2022 11:52:55 AM
rwxr-xr-x
π
toe
23.23 KB
08/05/2025 09:46:00 AM
rwxr-xr-x
π
top
132.27 KB
04/30/2024 04:43:23 PM
rwxr-xr-x
π
touch
92.03 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
tput
27.25 KB
08/05/2025 09:46:00 AM
rwxr-xr-x
π
tr
47.87 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
troff
732.07 KB
02/01/2022 10:44:53 AM
rwxr-xr-x
π
true
27.47 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
truncate
35.66 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
tset
27.34 KB
08/05/2025 09:46:00 AM
rwxr-xr-x
π
tsort
47.79 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
tty
31.65 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
tzselect
14.99 KB
11/05/2025 09:30:56 AM
rwxr-xr-x
π
uapi
1.02 KB
03/14/2026 09:26:07 AM
rwxr-xr-x
π
ul
23.45 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
uname
31.66 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
unexpand
39.73 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
uniq
43.83 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
unlink
31.66 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
unzip
196.14 KB
03/18/2025 03:53:48 AM
rwxr-xr-x
π
unzipsfx
87.89 KB
03/18/2025 03:53:48 AM
rwxr-xr-x
π
uptime
15.29 KB
04/30/2024 04:43:23 PM
rwxr-xr-x
π
users
35.68 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
utmpdump
23.4 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
vdir
137.65 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
vi
691 bytes
10/14/2025 09:11:26 AM
rwxr-xr-x
π
view
150 bytes
10/14/2025 09:11:26 AM
rwxr-xr-x
π
vim
3.84 MB
10/14/2025 09:11:29 AM
rwxr-xr-x
π
vimdiff
3.84 MB
10/14/2025 09:11:29 AM
rwxr-xr-x
π
vimtutor
2.07 KB
10/14/2025 09:11:25 AM
rwxr-xr-x
π
vmstat
39.41 KB
04/30/2024 04:43:23 PM
rwxr-xr-x
π
watch
27.87 KB
04/30/2024 04:43:23 PM
rwxr-xr-x
π
wc
43.73 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
wget
521.41 KB
09/03/2024 11:58:56 AM
rwxr-xr-x
π
whereis
32.03 KB
03/13/2025 06:30:13 AM
rwxr-xr-x
π
which
27.89 KB
08/05/2025 06:19:33 AM
rwxr-xr-x
π
who
51.77 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
whoami
31.66 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
word-list-compress
15.7 KB
01/26/2022 09:47:25 PM
rwxr-xr-x
π
x86_64-redhat-linux-c++
1.04 MB
02/12/2025 01:11:11 PM
rwxr-xr-x
π
x86_64-redhat-linux-g++
1.04 MB
02/12/2025 01:11:11 PM
rwxr-xr-x
π
x86_64-redhat-linux-gcc
1.04 MB
02/12/2025 01:11:11 PM
rwxr-xr-x
π
x86_64-redhat-linux-gcc-11
1.04 MB
02/12/2025 01:11:11 PM
rwxr-xr-x
π
xargs
64.09 KB
10/02/2024 09:04:59 PM
rwxr-xr-x
π
xmlcatalog
23.15 KB
08/07/2025 03:49:23 PM
rwxr-xr-x
π
xmllint
80.55 KB
08/07/2025 03:49:23 PM
rwxr-xr-x
π
xmlwf
39.63 KB
05/13/2025 05:53:46 PM
rwxr-xr-x
π
xsltproc
31.23 KB
05/13/2025 07:06:03 PM
rwxr-xr-x
π
xsubpp
4.96 KB
02/16/2022 08:56:48 AM
rwxr-xr-x
π
xxd
19.32 KB
10/14/2025 09:11:29 AM
rwxr-xr-x
π
yes
31.51 KB
03/12/2025 12:52:26 PM
rwxr-xr-x
π
zcat
1.94 KB
10/15/2022 05:26:34 PM
rwxr-xr-x
π
zcmp
1.64 KB
10/15/2022 05:26:34 PM
rwxr-xr-x
π
zdiff
6.31 KB
10/15/2022 05:26:34 PM
rwxr-xr-x
π
zegrep
33 bytes
10/15/2022 05:26:34 PM
rwxr-xr-x
π
zfgrep
33 bytes
10/15/2022 05:26:34 PM
rwxr-xr-x
π
zforce
2.04 KB
10/15/2022 05:26:34 PM
rwxr-xr-x
π
zgrep
7.93 KB
10/15/2022 05:26:34 PM
rwxr-xr-x
π
zip
221.09 KB
04/07/2023 02:02:33 PM
rwxr-xr-x
π
zipcloak
75.7 KB
04/07/2023 02:02:33 PM
rwxr-xr-x
π
zipgrep
2.89 KB
10/10/2008 05:40:36 PM
rwxr-xr-x
π
zipinfo
196.14 KB
03/18/2025 03:53:48 AM
rwxr-xr-x
π
zipnote
67.61 KB
04/07/2023 02:02:33 PM
rwxr-xr-x
π
zipsplit
63.58 KB
04/07/2023 02:02:33 PM
rwxr-xr-x
π
zless
2.16 KB
10/15/2022 05:26:34 PM
rwxr-xr-x
π
zmore
1.8 KB
10/15/2022 05:26:34 PM
rwxr-xr-x
π
znew
4.47 KB
10/15/2022 05:26:34 PM
rwxr-xr-x
π
zsoelim
0 bytes
01/01/1970 12:00:00 AM
---------
Editing: ssh-copy-id
Close
#!/usr/bin/sh # Copyright (c) 1999-2020 Philip Hands <phil@hands.com> # 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" exit 1 fi fi # shellcheck disable=SC2010 DEFAULT_PUB_ID_FILE=$(ls -t "${HOME}"/.ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1) SSH="ssh -a -x" umask 0177 usage () { printf 'Usage: %s [-h|-?|-f|-n|-s] [-i [identity_file]] [-p port] [-F alternative ssh_config file] [[-o <ssh -o options>] ...] [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-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" 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/.*: *//')" exit 1 } done printf '%s: INFO: Source of key(s) to be installed: "%s"\n' "$0" "$PUB_ID_FILE" >&2 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 while getopts "i:o:p:F:fnsh?" 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" usage } SEEN_OPT_I="yes" use_id_file "${OPTARG:-$DEFAULT_PUB_ID_FILE}" ;; o|p|F) SSH_OPTS="${SSH_OPTS:+$SSH_OPTS }-$OPT '$(quote "${OPTARG}")'" ;; f) FORCED=1 ;; n) DRY_RUN=1 ;; s) SFTP=sftp ;; 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 # drop trailing colon USER_HOST="$*" # tack the hostname onto SSH_OPTS SSH_OPTS="${SSH_OPTS:+$SSH_OPTS }'$(quote "$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 # shellcheck disable=SC2086 if [ -z "$(eval $GET_ID)" ] ; then printf '%s: ERROR: No identities found\n' "$0" >&2 exit 1 fi # filter_ids() # tries to log in using the keys piped to it, and filters out any that work filter_ids() { L_SUCCESS="$1" 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 authorized_keys file # optionally takes an alternative path for authorized_keys installkeys_sh() { AUTH_KEY_FILE=${1:-.ssh/authorized_keys} AUTH_KEY_DIR=$(dirname "${AUTH_KEY_FILE}") # 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 INSTALLKEYS_SH=$(tr '\t\n' ' ' <<-EOF cd; umask 077; 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() { # repopulate "$@" inside this function eval set -- "$SSH_OPTS" 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 .ssh/authorized_keys $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 .ssh chmod 700 .ssh put $L_KEYS .ssh/authorized_keys chmod 600 .ssh/authorized_keys 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\n' "$0" >&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 ;; dropbear*) populate_new_ids 0 [ "$DRY_RUN" ] || printf '%s\n' "$NEW_IDS" | \ $SSH "$@" "$(installkeys_sh /etc/dropbear/authorized_keys)" \ || exit 1 ADDED=$(printf '%s\n' "$NEW_IDS" | wc -l) ;; *) # Assuming that the remote host treats ~/.ssh/authorized_keys 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 cat <<-EOF Number of key(s) added: $ADDED Now try logging into the machine, with: "${SFTP:-ssh} $SSH_OPTS" and check to make sure that only the key(s) you wanted were added. EOF fi # =-=-=-=