//bin UP
#!/bin/sh
# Copyright (c) 1999-2016 Philip Hands <phil@hands.com>
# 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
# 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
most_recent_id="$(cd "$HOME" ; ls -t .ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1)"
DEFAULT_PUB_ID_FILE="${most_recent_id:+$HOME/}$most_recent_id"
usage () {
printf 'Usage: %s [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-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-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() {
local 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 ) || {
local 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 test "$#" -gt 0
do
[ "${SEEN_OPT_I}" ] && expr "$1" : "[-]i" >/dev/null && {
printf "\n%s: ERROR: -i option must not be specified more than once\n\n" "$0"
usage
}
OPT=
OPTARG=
# implement something like getopt to avoid Solaris pain
case "$1" in
-i?*|-o?*|-p?*)
OPT="$(printf -- "$1"|cut -c1-2)"
OPTARG="$(printf -- "$1"|cut -c3-)"
shift
;;
-o|-p)
OPT="$1"
OPTARG="$2"
shift 2
;;
-i)
OPT="$1"
test "$#" -le 2 || expr "$2" : "[-]" >/dev/null || {
OPTARG="$2"
shift
}
shift
;;
-f|-n|-h|-\?)
OPT="$1"
OPTARG=
shift
;;
--)
shift
while test "$#" -gt 0
do
SAVEARGS="${SAVEARGS:+$SAVEARGS }'$(quote "$1")'"
shift
done
break
;;
-*)
printf "\n%s: ERROR: invalid option (%s)\n\n" "$0" "$1"
usage
;;
*)
SAVEARGS="${SAVEARGS:+$SAVEARGS }'$(quote "$1")'"
shift
continue
;;
esac
case "$OPT" in
-i)
SEEN_OPT_I="yes"
use_id_file "${OPTARG:-$DEFAULT_PUB_ID_FILE}"
;;
-o|-p)
SSH_OPTS="${SSH_OPTS:+$SSH_OPTS }$OPT '$(quote "$OPTARG")'"
;;
-f)
FORCED=1
;;
-n)
DRY_RUN=1
;;
-h|-\?)
usage
;;
esac
done
eval set -- "$SAVEARGS"
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
# don't drop trailing colon because it can be a valid ipv6 address
USER_HOST=$(printf "%s\n" "$1")
# 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"
if [ -z "$(eval $GET_ID)" ] && [ -r "${PUB_ID_FILE:=$DEFAULT_PUB_ID_FILE}" ] ; then
use_id_file "$PUB_ID_FILE"
fi
if [ -z "$(eval $GET_ID)" ] ; then
printf '%s: ERROR: No identities found\n' "$0" >&2
exit 1
fi
# populate_new_ids() uses several global variables ($USER_HOST, $SSH_OPTS ...)
# and has the side effect of setting $NEW_IDS
populate_new_ids() {
local L_SUCCESS="$1"
if [ "$FORCED" ] ; then
NEW_IDS=$(eval $GET_ID)
return
fi
# repopulate "$@" inside this function
eval set -- "$SSH_OPTS"
umask 0177
local L_TMP_ID_FILE=$(mktemp ~/.ssh/ssh-copy-id_id.XXXXXXXXXX)
if test $? -ne 0 || test "x$L_TMP_ID_FILE" = "x" ; then
printf '%s: ERROR: mktemp failed\n' "$0" >&2
exit 1
fi
local L_CLEANUP="rm -f \"$L_TMP_ID_FILE\" \"${L_TMP_ID_FILE}.stderr\""
trap "$L_CLEANUP" EXIT TERM INT QUIT
printf '%s: INFO: attempting to log in with the new key(s), to filter out any that are already installed\n' "$0" >&2
NEW_IDS=$(
eval $GET_ID | {
while read 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 2>"$L_TMP_ID_FILE.stderr" </dev/null
if [ "$?" = "$L_SUCCESS" ] ; then
: > "$L_TMP_ID_FILE"
else
grep 'Permission denied' "$L_TMP_ID_FILE.stderr" >/dev/null || {
sed -e 's/^/ERROR: /' <"$L_TMP_ID_FILE.stderr" >"$L_TMP_ID_FILE"
cat >/dev/null #consume the other keys, causing loop to end
}
fi
cat "$L_TMP_ID_FILE"
done
}
)
eval "$L_CLEANUP" && trap - EXIT TERM INT QUIT
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
}
REMOTE_VERSION=$(ssh -v -o PreferredAuthentications=',' -o ControlPath=none "$@" 2>&1 |
sed -ne 's/.*remote software version //p')
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 ~/.ssh/authorized_keys as one might expect
populate_new_ids 0
# in ssh below - to defend against quirky remote shells: use 'exec sh -c' to get POSIX;
# 'cd' to be at $HOME; add a newline if it's missing; and all on one line, because tcsh.
[ "$DRY_RUN" ] || printf '%s\n' "$NEW_IDS" | \
ssh "$@" "exec sh -c 'cd ; umask 077 ; mkdir -p .ssh && { [ -z "'`tail -1c .ssh/authorized_keys 2>/dev/null`'" ] || echo >> .ssh/authorized_keys || exit 1; } && cat >> .ssh/authorized_keys || exit 1 ; if type restorecon >/dev/null 2>&1 ; then restorecon -F .ssh .ssh/authorized_keys ; fi'" \
|| exit 1
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: "ssh $SSH_OPTS"
and check to make sure that only the key(s) you wanted were added.
EOF
fi
# =-=-=-=
| 7za | 46 | V |
| [ | 54888 | V |
| aclocal | 36478 | V |
| aclocal-1.16 | 36478 | V |
| addr2line | 34224 | V |
| ar | 63448 | V |
| arch | 38232 | V |
| arpaname | 12104 | V |
| as | 911264 | V |
| aspell | 163328 | V |
| autoconf | 14768 | V |
| autoheader | 8534 | V |
| autom4te | 32181 | V |
| automake | 257949 | V |
| automake-1.16 | 257949 | V |
| autoreconf | 21066 | V |
| autoscan | 17124 | V |
| autoupdate | 33872 | V |
| awk | 685848 | V |
| b2sum | 59072 | V |
| base32 | 42464 | V |
| base64 | 42480 | V |
| basename | 38312 | V |
| bash | 1154680 | V |
| bashbug-64 | 7348 | V |
| bun | 92752752 | V |
| bunzip2 | 37744 | V |
| bzcat | 37744 | V |
| bzcmp | 2128 | V |
| bzdiff | 2128 | V |
| bzgrep | 1677 | V |
| bzip2 | 37744 | V |
| bzip2recover | 16832 | V |
| bzless | 1259 | V |
| bzmore | 1259 | V |
| c++ | 1266616 | V |
| c++filt | 29584 | V |
| cagefs_enter.proxied | 1296 | V |
| cal | 67560 | V |
| captoinfo | 87360 | V |
| cat | 38360 | V |
| catchsegv | 3283 | V |
| cc | - | |
| chcon | 72032 | V |
| chgrp | 67880 | V |
| chmod | 63688 | V |
| chown | 71976 | V |
| chrt | 38080 | V |
| cksum | 38288 | V |
| clear | 12840 | V |
| cloudlinux-awp-user | 1818 | V |
| clwpos-user | 1818 | V |
| cmp | 106248 | V |
| col | 29704 | V |
| colcrt | 16872 | V |
| colrm | 25480 | V |
| column | 50656 | V |
| comm | 42560 | V |
| cp | 151528 | V |
| cpp | 1266552 | V |
| csplit | 54968 | V |
| curl | 235600 | V |
| cut | 50704 | V |
| date | 108504 | V |
| dbiprof | 6206 | V |
| delv | 43480 | V |
| df | 93272 | V |
| diff | 274440 | V |
| diff3 | 131688 | V |
| dig | 166072 | V |
| dir | 143256 | V |
| dircolors | 50744 | V |
| dirname | 34160 | V |
| dltest | 12152 | V |
| dnstap-read | 20920 | V |
| du | 109568 | V |
| easy_install-3 | - | |
| echo | 38248 | V |
| egrep | 28 | V |
| enchant | 21584 | V |
| enchant-lsmod | 13408 | V |
| env | 42344 | V |
| eps2eps | 639 | V |
| eqn | 237728 | V |
| ex | 1180432 | V |
| expand | 42592 | V |
| expr | 50760 | V |
| factor | 88032 | V |
| false | 34120 | V |
| fc-cache | 132 | V |
| fc-cache-64 | 20840 | V |
| fc-cat | 16744 | V |
| fc-conflist | 12544 | V |
| fc-list | 12544 | V |
| fc-match | 16648 | V |
| fc-pattern | 12552 | V |
| fc-query | 12536 | V |
| fc-scan | 12552 | V |
| fc-validate | 16648 | V |
| fgrep | 28 | V |
| file | 25280 | V |
| find | 228632 | V |
| flock | 33992 | V |
| fmt | 46584 | V |
| fold | 42416 | V |
| free | 21288 | V |
| funzip | 37504 | V |
| g++ | 1266616 | V |
| gawk | 685848 | V |
| gcc-ar | 37536 | V |
| gcc-nm | 37536 | V |
| gcc-ranlib | 37536 | V |
| gcov-dump | 584664 | V |
| gcov-tool | 622360 | V |
| gencat | 25432 | V |
| geoiplookup | 22416 | V |
| geoiplookup6 | 22168 | V |
| geqn | 237728 | V |
| getconf | 33240 | V |
| getent | 33920 | V |
| getopt | 21024 | V |
| ghostscript | 12648 | V |
| gifdiff | 63384 | V |
| gifsicle | 205056 | V |
| git | 3845928 | V |
| git-receive-pack | 3845928 | V |
| git-shell | 2236688 | V |
| git-upload-archive | 3845928 | V |
| git-upload-pack | 3845928 | V |
| gm | 8008 | V |
| gneqn | 908 | V |
| gnroff | 3312 | V |
| gpg | 1090344 | V |
| gpg-agent | 429360 | V |
| gpg-error | 34976 | V |
| gpg-zip | 3525 | V |
| gpgsplit | 89112 | V |
| gpgv | 462344 | V |
| gpic | 300896 | V |
| gprof | 105832 | V |
| grep | 198280 | V |
| groff | 127920 | V |
| grops | 195728 | V |
| grotty | 145304 | V |
| groups | 38288 | V |
| gs | 12648 | V |
| gsnd | 277 | V |
| gsoelim | 43576 | V |
| gtar | 459768 | V |
| gtbl | 158320 | V |
| gtroff | 824344 | V |
| gunzip | 2345 | V |
| gzexe | 6375 | V |
| gzip | 96944 | V |
| hdu | 18520 | V |
| head | 46592 | V |
| hexdump | 58888 | V |
| host | 145704 | V |
| hostid | 34136 | V |
| hostname | 21664 | V |
| hunspell | 148168 | V |
| iconv | 62904 | V |
| id | 46528 | V |
| idn | 40352 | V |
| ifnames | 4128 | V |
| infocmp | 62512 | V |
| infotocap | 87360 | V |
| install | 159912 | V |
| ionice | 29680 | V |
| ipcrm | 29688 | V |
| ipcs | 54680 | V |
| isosize | 25480 | V |
| ispell | 988 | V |
| isql | 37456 | V |
| iusql | 29344 | V |
| join | 54984 | V |
| jpegoptim | 40000 | V |
| kill | 38176 | V |
| ld | 1789080 | V |
| ld.bfd | 1789080 | V |
| ldd | 5441 | V |
| less | 177928 | V |
| lessecho | 12696 | V |
| lesskey | 22520 | V |
| lesspipe.sh | 3143 | V |
| link | 34136 | V |
| ln | 72192 | V |
| locale | 57800 | V |
| localedef | 314848 | V |
| logger | 51184 | V |
| login | 41944 | V |
| logname | 34144 | V |
| look | 16856 | V |
| ls | 143264 | V |
| m4 | 190016 | V |
| mailq | - | |
| make-dummy-cert | 610 | V |
| mariadb | 5320256 | V |
| mariadb-access | 112112 | V |
| mariadb-admin | 5087080 | V |
| mariadb-binlog | 5355944 | V |
| mariadb-check | 5084352 | V |
| mariadb-conv | 4800464 | V |
| mariadb-convert-table-format | 4385 | V |
| mariadb-dump | 5190624 | V |
| mariadb-dumpslow | 8382 | V |
| mariadb-embedded | 25370280 | V |
| mariadb-find-rows | 3433 | V |
| mariadb-hotcopy | 35497 | V |
| mariadb-import | 5198192 | V |
| mariadb-plugin | 4779336 | V |
| mariadb-secure-installation | 13982 | V |
| mariadb-setpermission | 18128 | V |
| mariadb-show | 5073480 | V |
| mariadb-slap | 5092920 | V |
| mariadb-tzinfo-to-sql | 4774552 | V |
| mariadb-waitpid | 4765944 | V |
| mc | 1360320 | V |
| mcdiff | 1360320 | V |
| mcedit | 1360320 | V |
| mcookie | 34064 | V |
| mcview | 1360320 | V |
| md5sum | 46632 | V |
| mesg | 16752 | V |
| mkdir | 84680 | V |
| mkfifo | 68056 | V |
| mknod | 72160 | V |
| mktemp | 46752 | V |
| more | 46016 | V |
| msmtp | 135208 | V |
| msmtpd | 21024 | V |
| msql2mysql | 1446 | V |
| mv | 147416 | V |
| my_print_defaults | 4766376 | V |
| mysql | 5320256 | V |
| mysql_config | 4574 | V |
| mysql_find_rows | 3433 | V |
| mysql_waitpid | 4765944 | V |
| mysqlaccess | 112112 | V |
| mysqladmin | 5087080 | V |
| mysqlbinlog | 5355944 | V |
| mysqlcheck | 5084352 | V |
| mysqldump | 5190624 | V |
| mysqlimport | 5198192 | V |
| mysqlshow | 5073480 | V |
| mytop | 73757 | V |
| namei | 33896 | V |
| nano | 253888 | V |
| neqn | 908 | V |
| newaliases | - | |
| nice | 38224 | V |
| nl | 46648 | V |
| nm | 51584 | V |
| nohup | 38312 | V |
| nproc | 38304 | V |
| nroff | 3312 | V |
| nslookup | 149768 | V |
| nsupdate | 74808 | V |
| numfmt | 67216 | V |
| objcopy | 245832 | V |
| objdump | 429832 | V |
| od | 75576 | V |
| odbc_config | 12128 | V |
| odbcinst | 29576 | V |
| openssl | 763856 | V |
| optipng | 145256 | V |
| pango-list | 12160 | V |
| pango-view | 58816 | V |
| passwd | 1284 | V |
| paste | 38296 | V |
| patch | 211416 | V |
| pathchk | 38232 | V |
| pdf2dsc | 698 | V |
| pdf2ps | 909 | V |
| perldoc | 118 | V |
| pgrep | 29536 | V |
| php | 6405720 | V |
| php-cgi | 6405192 | V |
| phpize | 5082 | V |
| pic | 300896 | V |
| piconv | 8271 | V |
| pinentry | 2404 | V |
| pinentry-curses | 79760 | V |
| ping | 67712 | V |
| pinky | 42456 | V |
| pip-3 | - | |
| pip3 | - | |
| pkill | 29536 | V |
| pmap | 33568 | V |
| pod2man | 15034 | V |
| pod2text | 10803 | V |
| pod2usage | 3948 | V |
| post-grohtml | 244456 | V |
| pr | 84120 | V |
| pre-grohtml | 133688 | V |
| precat | 5656 | V |
| preunzip | 5656 | V |
| prezip | 5656 | V |
| prezip-bin | 12264 | V |
| printenv | 34120 | V |
| printf | 54848 | V |
| ps | 137984 | V |
| ps2ascii | 631 | V |
| ps2epsi | 2752 | V |
| ps2pdf | 272 | V |
| ps2pdf12 | 215 | V |
| ps2pdf13 | 215 | V |
| ps2pdf14 | 215 | V |
| ps2pdfwr | 1097 | V |
| ps2ps | 647 | V |
| ps2ps2 | 669 | V |
| ptx | 79872 | V |
| pwd | 38320 | V |
| pwdx | 12984 | V |
| pydoc-3 | - | |
| pydoc3 | - | |
| python3 | 11872 | V |
| python3.6 | 11872 | V |
| python3.6m | 11872 | V |
| pyvenv-3 | - | |
| ranlib | 63456 | V |
| raw | 16896 | V |
| readelf | 639528 | V |
| readlink | 46984 | V |
| realpath | 51136 | V |
| recode | 48160 | V |
| rename | 16896 | V |
| renew-dummy-cert | 725 | V |
| renice | 16856 | V |
| replace | 4744232 | V |
| reset | 25352 | V |
| restic | 29778104 | V |
| rev | 12760 | V |
| rm | 72064 | V |
| rmdir | 46552 | V |
| rnano | 253888 | V |
| rsync | 522376 | V |
| run-with-aspell | 85 | V |
| runcon | 38272 | V |
| rvi | 1180432 | V |
| rview | 1180432 | V |
| rvim | 3067856 | V |
| scalar | 2290912 | V |
| scl | 37752 | V |
| scl_enabled | 258 | V |
| scl_source | 1863 | V |
| scp | 108816 | V |
| script | 37680 | V |
| sdiff | 107856 | V |
| sed | 118248 | V |
| seq | 54728 | V |
| setsid | 16768 | V |
| setterm | 46208 | V |
| sftp | 162976 | V |
| sh | 1154680 | V |
| sha1sum | 46640 | V |
| sha224sum | 46672 | V |
| sha256sum | 46672 | V |
| sha384sum | 46688 | V |
| sha512sum | 46688 | V |
| shred | 63336 | V |
| shuf | 59488 | V |
| size | 34048 | V |
| skill | 29488 | V |
| slabtop | 21344 | V |
| sleep | 38296 | V |
| slencheck | 12584 | V |
| snice | 29488 | V |
| soelim | 43576 | V |
| sort | 126440 | V |
| spell | 122 | V |
| split | 59440 | V |
| sprof | 29360 | V |
| sqlite3 | 1346512 | V |
| ssh | 779208 | V |
| ssh-add | 353808 | V |
| ssh-agent | 332768 | V |
| ssh-copy-id | 10694 | V |
| ssh-keygen | 440896 | V |
| ssh-keyscan | 442304 | V |
| stat | 88232 | V |
| stdbuf | 50688 | V |
| strings | 38328 | V |
| strip | 245856 | V |
| stty | 79472 | V |
| sum | 46624 | V |
| svn | 346872 | V |
| svnadmin | 103376 | V |
| svndumpfilter | 37600 | V |
| svnfsfs | 41640 | V |
| svnlook | 78688 | V |
| svnrdump | 58408 | V |
| svnserve | 112288 | V |
| svnsync | 62512 | V |
| svnversion | 16696 | V |
| sync | 38248 | V |
| tabs | 16952 | V |
| tac | 42488 | V |
| tail | 75912 | V |
| tar | 459768 | V |
| taskset | 38152 | V |
| tbl | 158320 | V |
| tclsh | 9256 | V |
| tclsh8.6 | 9256 | V |
| tee | 42472 | V |
| test | 54832 | V |
| tic | 87360 | V |
| timeout | 42856 | V |
| tload | 17160 | V |
| tmpwatch | 36320 | V |
| toe | 16848 | V |
| top | 124616 | V |
| touch | 96192 | V |
| tput | 25392 | V |
| tr | 50816 | V |
| tree | 83544 | V |
| troff | 824344 | V |
| true | 34128 | V |
| truncate | 42352 | V |
| tset | 25352 | V |
| tsort | 42488 | V |
| tty | 34112 | V |
| tzselect | 15370 | V |
| ul | 21080 | V |
| uname | 38224 | V |
| unexpand | 46704 | V |
| uniq | 50832 | V |
| unlink | 34144 | V |
| unrar | 355344 | V |
| unversioned-python | - | |
| unzip | 206728 | V |
| unzipsfx | 103912 | V |
| uptime | 12888 | V |
| users | 38296 | V |
| utmpdump | 29352 | V |
| vdir | 143264 | V |
| vi | 1180432 | V |
| view | 1180432 | V |
| vim | 3067856 | V |
| vimdiff | 3067856 | V |
| vimtutor | 2121 | V |
| vmstat | 37672 | V |
| watch | 29888 | V |
| wc | 50832 | V |
| wget | 533928 | V |
| whereis | 29976 | V |
| which | 30088 | V |
| who | 54880 | V |
| whoami | 34136 | V |
| word-list-compress | 12280 | V |
| x86_64-redhat-linux-c++ | 1266616 | V |
| x86_64-redhat-linux-g++ | 1266616 | V |
| x86_64-redhat-linux-gcc-8 | 1266576 | V |
| xargs | 75888 | V |
| xmlcatalog | 20864 | V |
| xmllint | 75128 | V |
| xmlwf | 37848 | V |
| xsltproc | 29152 | V |
| xxd | 21032 | V |
| yes | 34168 | V |
| zcat | 1983 | V |
| zcmp | 1677 | V |
| zdiff | 5879 | V |
| zegrep | 29 | V |
| zfgrep | 29 | V |
| zforce | 2080 | V |
| zgrep | 7582 | V |
| zip | 234496 | V |
| zipcloak | 105376 | V |
| zipgrep | 2953 | V |
| zipinfo | 206728 | V |
| zipnote | 100104 | V |
| zipsplit | 100104 | V |
| zless | 2205 | V |
| zmore | 1841 | V |
| znew | 4552 | V |
| zsoelim | 43576 | V |