Linux web-conference.aiou.edu.pk 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64
Apache/2.4.41 (Ubuntu)
: 172.16.50.247 | : 3.137.221.114
Cant Read [ /etc/named.conf ]
7.4.3-4ubuntu2.28
www-data
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
usr /
bin /
[ HOME SHELL ]
Name
Size
Permission
Action
NF
963
B
-rwxr-xr-x
VGAuthService
138.53
KB
-rwxr-xr-x
[
58.34
KB
-rwxr-xr-x
aa-enabled
30.52
KB
-rwxr-xr-x
aa-exec
34.52
KB
-rwxr-xr-x
ab
58.34
KB
-rwxr-xr-x
add-apt-repository
7.24
KB
-rwxr-xr-x
addpart
30.23
KB
-rwxr-xr-x
apport-bug
2.5
KB
-rwxr-xr-x
apport-cli
13.05
KB
-rwxr-xr-x
apport-collect
2.5
KB
-rwxr-xr-x
apport-unpack
2.02
KB
-rwxr-xr-x
apropos
55.21
KB
-rwxr-xr-x
apt
18.38
KB
-rwxr-xr-x
apt-add-repository
7.24
KB
-rwxr-xr-x
apt-cache
86.46
KB
-rwxr-xr-x
apt-cdrom
30.46
KB
-rwxr-xr-x
apt-config
26.38
KB
-rwxr-xr-x
apt-extracttemplates
26.47
KB
-rwxr-xr-x
apt-ftparchive
274.47
KB
-rwxr-xr-x
apt-get
46.46
KB
-rwxr-xr-x
apt-key
27.28
KB
-rwxr-xr-x
apt-mark
62.46
KB
-rwxr-xr-x
apt-sortpkgs
46.39
KB
-rwxr-xr-x
arch
38.37
KB
-rwxr-xr-x
at
54.26
KB
-rwsr-sr-x
atq
54.26
KB
-rwsr-sr-x
atrm
54.26
KB
-rwsr-sr-x
automat-visualize3
402
B
-rwxr-xr-x
awk
686.47
KB
-rwxr-xr-x
b2sum
58.37
KB
-rwxr-xr-x
base32
42.34
KB
-rwxr-xr-x
base64
42.34
KB
-rwxr-xr-x
basename
38.34
KB
-rwxr-xr-x
bash
1.13
MB
-rwxr-xr-x
bashbug
6.63
KB
-rwxr-xr-x
batch
152
B
-rwxr-xr-x
bc
98.7
KB
-rwxr-xr-x
boltctl
150.82
KB
-rwxr-xr-x
bootctl
62.34
KB
-rwxr-xr-x
bsd-from
14.15
KB
-rwxr-xr-x
bsd-write
14.15
KB
-rwxr-sr-x
btrfs
800.09
KB
-rwxr-xr-x
btrfs-convert
455.53
KB
-rwxr-xr-x
btrfs-find-root
423.59
KB
-rwxr-xr-x
btrfs-image
451.53
KB
-rwxr-xr-x
btrfs-map-logical
431.53
KB
-rwxr-xr-x
btrfs-select-super
431.53
KB
-rwxr-xr-x
btrfsck
800.09
KB
-rwxr-xr-x
btrfstune
427.53
KB
-rwxr-xr-x
bunzip2
38.23
KB
-rwxr-xr-x
busctl
86.34
KB
-rwxr-xr-x
busybox
2.07
MB
-rwxr-xr-x
byobu
8.17
KB
-rwxr-xr-x
byobu-config
996
B
-rwxr-xr-x
byobu-ctrl-a
4.66
KB
-rwxr-xr-x
byobu-disable
1.26
KB
-rwxr-xr-x
byobu-disable-prompt
1.31
KB
-rwxr-xr-x
byobu-enable
1.15
KB
-rwxr-xr-x
byobu-enable-prompt
1.42
KB
-rwxr-xr-x
byobu-export
1.32
KB
-rwxr-xr-x
byobu-janitor
6.29
KB
-rwxr-xr-x
byobu-keybindings
1.47
KB
-rwxr-xr-x
byobu-launch
3.25
KB
-rwxr-xr-x
byobu-launcher
1.87
KB
-rwxr-xr-x
byobu-launcher-install
2.4
KB
-rwxr-xr-x
byobu-launcher-uninstall
1.52
KB
-rwxr-xr-x
byobu-layout
3.27
KB
-rwxr-xr-x
byobu-prompt
1.13
KB
-rwxr-xr-x
byobu-quiet
1.38
KB
-rwxr-xr-x
byobu-reconnect-sockets
3.22
KB
-rwxr-xr-x
byobu-screen
8.17
KB
-rwxr-xr-x
byobu-select-backend
1.42
KB
-rwxr-xr-x
byobu-select-profile
5
KB
-rwxr-xr-x
byobu-select-session
1012
B
-rwxr-xr-x
byobu-shell
1.56
KB
-rwxr-xr-x
byobu-silent
1.28
KB
-rwxr-xr-x
byobu-status
5.87
KB
-rwxr-xr-x
byobu-status-detail
1.18
KB
-rwxr-xr-x
byobu-tmux
8.17
KB
-rwxr-xr-x
byobu-ugraph
4.56
KB
-rwxr-xr-x
byobu-ulevel
11.71
KB
-rwxr-xr-x
bzcat
38.23
KB
-rwxr-xr-x
bzcmp
2.17
KB
-rwxr-xr-x
bzdiff
2.17
KB
-rwxr-xr-x
bzegrep
3.69
KB
-rwxr-xr-x
bzexe
4.76
KB
-rwxr-xr-x
bzfgrep
3.69
KB
-rwxr-xr-x
bzgrep
3.69
KB
-rwxr-xr-x
bzip2
38.23
KB
-rwxr-xr-x
bzip2recover
18.15
KB
-rwxr-xr-x
bzless
1.27
KB
-rwxr-xr-x
bzmore
1.27
KB
-rwxr-xr-x
c_rehash
6.65
KB
-rwxr-xr-x
cal
36.95
KB
-rwxr-xr-x
calendar
34.63
KB
-rwxr-xr-x
captoinfo
90.41
KB
-rwxr-xr-x
cat
42.4
KB
-rwxr-xr-x
catchsegv
3.25
KB
-rwxr-xr-x
catman
38.69
KB
-rwxr-xr-x
cautious-launcher
853
B
-rwxr-xr-x
cftp3
380
B
-rwxr-xr-x
chage
82.53
KB
-rwxr-sr-x
chardet3
389
B
-rwxr-xr-x
chardetect3
389
B
-rwxr-xr-x
chattr
14.31
KB
-rwxr-xr-x
chcon
70.34
KB
-rwxr-xr-x
check-language-support
2.71
KB
-rwxr-xr-x
checkgid
14.15
KB
-rwxr-xr-x
chfn
83.07
KB
-rwsr-xr-x
chgrp
70.34
KB
-rwxr-xr-x
chmod
62.37
KB
-rwxr-xr-x
choom
50.23
KB
-rwxr-xr-x
chown
70.34
KB
-rwxr-xr-x
chrt
38.23
KB
-rwxr-xr-x
chsh
51.8
KB
-rwsr-xr-x
chvt
14.07
KB
-rwxr-xr-x
ckbcomp
146.39
KB
-rwxr-xr-x
ckeygen3
386
B
-rwxr-xr-x
cksum
38.34
KB
-rwxr-xr-x
clear
14.31
KB
-rwxr-xr-x
clear_console
14.23
KB
-rwxr-xr-x
cloud-id
396
B
-rwxr-xr-x
cloud-init
400
B
-rwxr-xr-x
cloud-init-per
2.06
KB
-rwxr-xr-x
cmp
50.09
KB
-rwxr-xr-x
codepage
13.99
KB
-rwxr-xr-x
col
18.15
KB
-rwxr-xr-x
col1
963
B
-rwxr-xr-x
col2
963
B
-rwxr-xr-x
col3
963
B
-rwxr-xr-x
col4
963
B
-rwxr-xr-x
col5
963
B
-rwxr-xr-x
col6
963
B
-rwxr-xr-x
col7
963
B
-rwxr-xr-x
col8
963
B
-rwxr-xr-x
col9
963
B
-rwxr-xr-x
colcrt
14.15
KB
-rwxr-xr-x
colrm
14.15
KB
-rwxr-xr-x
column
14.16
KB
-rwxr-xr-x
comm
42.37
KB
-rwxr-xr-x
compose
18.05
KB
-rwxr-xr-x
conch3
382
B
-rwxr-xr-x
corelist
14.73
KB
-rwxr-xr-x
cp
150.37
KB
-rwxr-xr-x
cpan
7.96
KB
-rwxr-xr-x
cpan5.30-x86_64-linux-gnu
7.98
KB
-rwxr-xr-x
cpio
161.63
KB
-rwxr-xr-x
crontab
42.7
KB
-rwxr-sr-x
csplit
54.37
KB
-rwxr-xr-x
ctail
960
B
-rwxr-xr-x
ctstat
30.51
KB
-rwxr-xr-x
curl
234.23
KB
-rwxr-xr-x
cut
46.37
KB
-rwxr-xr-x
cvtsudoers
266.7
KB
-rwxr-xr-x
dash
126.77
KB
-rwxr-xr-x
date
106.37
KB
-rwxr-xr-x
dbus-cleanup-sockets
14.14
KB
-rwxr-xr-x
dbus-daemon
243.2
KB
-rwxr-xr-x
dbus-monitor
30.14
KB
-rwxr-xr-x
dbus-run-session
14.14
KB
-rwxr-xr-x
dbus-send
30.14
KB
-rwxr-xr-x
dbus-update-activation-environ...
14.14
KB
-rwxr-xr-x
dbus-uuidgen
14.14
KB
-rwxr-xr-x
dbxtool
26.3
KB
-rwxr-xr-x
dd
78.38
KB
-rwxr-xr-x
deallocvt
14.07
KB
-rwxr-xr-x
deb-systemd-helper
20.83
KB
-rwxr-xr-x
deb-systemd-invoke
4.33
KB
-rwxr-xr-x
debconf
2.79
KB
-rwxr-xr-x
debconf-apt-progress
11.27
KB
-rwxr-xr-x
debconf-communicate
608
B
-rwxr-xr-x
debconf-copydb
1.68
KB
-rwxr-xr-x
debconf-escape
647
B
-rwxr-xr-x
debconf-set-selections
2.87
KB
-rwxr-xr-x
debconf-show
1.78
KB
-rwxr-xr-x
debian-distro-info
22.89
KB
-rwxr-xr-x
delpart
30.23
KB
-rwxr-xr-x
delv
44.88
KB
-rwxr-xr-x
df
90.95
KB
-rwxr-xr-x
dfu-tool
106.3
KB
-rwxr-xr-x
dh_bash-completion
2.39
KB
-rwxr-xr-x
diff
214.34
KB
-rwxr-xr-x
diff3
66.21
KB
-rwxr-xr-x
dig
146.84
KB
-rwxr-xr-x
dir
138.81
KB
-rwxr-xr-x
dircolors
46.34
KB
-rwxr-xr-x
dirmngr
569.86
KB
-rwxr-xr-x
dirmngr-client
119.06
KB
-rwxr-xr-x
dirname
38.34
KB
-rwxr-xr-x
distro-info
22.89
KB
-rwxr-xr-x
dmesg
82.46
KB
-rwxr-xr-x
dnsdomainname
26.23
KB
-rwxr-xr-x
do-release-upgrade
9.99
KB
-rwxr-xr-x
domainname
26.23
KB
-rwxr-xr-x
dpkg
302.68
KB
-rwxr-xr-x
dpkg-deb
174.54
KB
-rwxr-xr-x
dpkg-divert
150.59
KB
-rwxr-xr-x
dpkg-maintscript-helper
20.03
KB
-rwxr-xr-x
dpkg-query
162.59
KB
-rwxr-xr-x
dpkg-split
122.48
KB
-rwxr-xr-x
dpkg-statoverride
62.27
KB
-rwxr-xr-x
dpkg-trigger
82.49
KB
-rwxr-xr-x
du
106.37
KB
-rwxr-xr-x
dumpkeys
174.52
KB
-rwxr-xr-x
eatmydata
2.74
KB
-rwxr-xr-x
ec2metadata
7.12
KB
-rwxr-xr-x
echo
38.34
KB
-rwxr-xr-x
ed
54.2
KB
-rwxr-xr-x
edit
18.05
KB
-rwxr-xr-x
editor
312.63
KB
-rwxr-xr-x
egrep
28
B
-rwxr-xr-x
eject
34.84
KB
-rwxr-xr-x
enc2xs
41.12
KB
-rwxr-xr-x
encguess
2.99
KB
-rwxr-xr-x
env
42.34
KB
-rwxr-xr-x
envsubst
42.23
KB
-rwxr-xr-x
eqn
201.5
KB
-rwxr-xr-x
ex
2.78
MB
-rwxr-xr-x
expand
42.37
KB
-rwxr-xr-x
expiry
30.58
KB
-rwxr-sr-x
expr
54.34
KB
-rwxr-xr-x
factor
78.37
KB
-rwxr-xr-x
faillog
22.59
KB
-rwxr-xr-x
fallocate
34.23
KB
-rwxr-xr-x
false
38.34
KB
-rwxr-xr-x
fcgistarter
14.15
KB
-rwxr-xr-x
fgconsole
14.07
KB
-rwxr-xr-x
fgrep
28
B
-rwxr-xr-x
file
26.47
KB
-rwxr-xr-x
finalrd
2.1
KB
-rwxr-xr-x
fincore
34.27
KB
-rwxr-xr-x
find
312.66
KB
-rwxr-xr-x
findmnt
71.41
KB
-rwxr-xr-x
flock
34.3
KB
-rwxr-xr-x
fmt
46.34
KB
-rwxr-xr-x
fold
42.34
KB
-rwxr-xr-x
free
26.23
KB
-rwxr-xr-x
from
14.15
KB
-rwxr-xr-x
ftp
106.7
KB
-rwxr-xr-x
funzip
26.15
KB
-rwxr-xr-x
fuser
39.24
KB
-rwxr-xr-x
fusermount
38.23
KB
-rwsr-xr-x
fwupdagent
186.3
KB
-rwxr-xr-x
fwupdate
82.43
KB
-rwxr-xr-x
fwupdmgr
186.3
KB
-rwxr-xr-x
fwupdtool
378.92
KB
-rwxr-xr-x
gapplication
22.38
KB
-rwxr-xr-x
gawk
686.47
KB
-rwxr-xr-x
gdbus
50.38
KB
-rwxr-xr-x
geqn
201.5
KB
-rwxr-xr-x
getconf
34.29
KB
-rwxr-xr-x
getent
38.65
KB
-rwxr-xr-x
getkeycodes
14.07
KB
-rwxr-xr-x
getopt
22.23
KB
-rwxr-xr-x
gettext
42.23
KB
-rwxr-xr-x
gettext.sh
4.52
KB
-rwxr-xr-x
ginstall-info
115.24
KB
-rwxr-xr-x
gio
90.4
KB
-rwxr-xr-x
gio-querymodules
14.3
KB
-rwxr-xr-x
git
2.98
MB
-rwxr-xr-x
git-receive-pack
2.98
MB
-rwxr-xr-x
git-shell
1.71
MB
-rwxr-xr-x
git-upload-archive
2.98
MB
-rwxr-xr-x
git-upload-pack
2.98
MB
-rwxr-xr-x
glib-compile-schemas
50.38
KB
-rwxr-xr-x
gpasswd
86.39
KB
-rwsr-xr-x
gpg
1.02
MB
-rwxr-xr-x
gpg-agent
409.04
KB
-rwxr-xr-x
gpg-connect-agent
163.16
KB
-rwxr-xr-x
gpg-wks-server
203.2
KB
-rwxr-xr-x
gpg-zip
3.43
KB
-rwxr-xr-x
gpgcompose
874.29
KB
-rwxr-xr-x
gpgconf
174.66
KB
-rwxr-xr-x
gpgparsemail
34.38
KB
-rwxr-xr-x
gpgsm
507.24
KB
-rwxr-xr-x
gpgsplit
86.76
KB
-rwxr-xr-x
gpgtar
151.63
KB
-rwxr-xr-x
gpgv
447.15
KB
-rwxr-xr-x
gpic
216.34
KB
-rwxr-xr-x
grep
194.47
KB
-rwxr-xr-x
gresource
22.3
KB
-rwxr-xr-x
groff
121.53
KB
-rwxr-xr-x
grog
2.71
KB
-rwxr-xr-x
grops
181.94
KB
-rwxr-xr-x
grotty
129.56
KB
-rwxr-xr-x
groups
38.34
KB
-rwxr-xr-x
growpart
23.95
KB
-rwxr-xr-x
grub-editenv
248.02
KB
-rwxr-xr-x
grub-file
780.38
KB
-rwxr-xr-x
grub-fstest
901.84
KB
-rwxr-xr-x
grub-glue-efi
243.86
KB
-rwxr-xr-x
grub-kbdcomp
1.64
KB
-rwxr-xr-x
grub-menulst2cfg
228.13
KB
-rwxr-xr-x
grub-mkfont
268.42
KB
-rwxr-xr-x
grub-mkimage
348.95
KB
-rwxr-xr-x
grub-mklayout
252.17
KB
-rwxr-xr-x
grub-mknetdir
401.56
KB
-rwxr-xr-x
grub-mkpasswd-pbkdf2
248.2
KB
-rwxr-xr-x
grub-mkrelpath
239.58
KB
-rwxr-xr-x
grub-mkrescue
954.3
KB
-rwxr-xr-x
grub-mkstandalone
477.86
KB
-rwxr-xr-x
grub-mount
728.8
KB
-rwxr-xr-x
grub-ntldr-img
38.24
KB
-rwxr-xr-x
grub-render-label
800.75
KB
-rwxr-xr-x
grub-script-check
271.7
KB
-rwxr-xr-x
grub-syslinux2cfg
741.27
KB
-rwxr-xr-x
gsettings
30.38
KB
-rwxr-xr-x
gtbl
138.51
KB
-rwxr-xr-x
gunzip
2.29
KB
-rwxr-xr-x
gzexe
6.3
KB
-rwxr-xr-x
gzip
95.21
KB
-rwxr-xr-x
h2ph
28.54
KB
-rwxr-xr-x
h2xs
59.44
KB
-rwxr-xr-x
hd
34.25
KB
-rwxr-xr-x
head
46.37
KB
-rwxr-xr-x
helpztags
2.46
KB
-rwxr-xr-x
hexdump
34.25
KB
-rwxr-xr-x
host
118.78
KB
-rwxr-xr-x
hostid
38.34
KB
-rwxr-xr-x
hostname
26.23
KB
-rwxr-xr-x
hostnamectl
26.22
KB
-rwxr-xr-x
htcacheclean
38.16
KB
-rwxr-xr-x
htdbm
26.15
KB
-rwxr-xr-x
htdigest
14.15
KB
-rwxr-xr-x
htop
184.87
KB
-rwxr-xr-x
htpasswd
26.15
KB
-rwxr-xr-x
hwe-support-status
10.58
KB
-rwxr-xr-x
i386
26.5
KB
-rwxr-xr-x
ibd2sdi
6.48
MB
-rwxr-xr-x
iconv
66.41
KB
-rwxr-xr-x
id
46.37
KB
-rwxr-xr-x
info
309.74
KB
-rwxr-xr-x
infobrowser
309.74
KB
-rwxr-xr-x
infocmp
62.38
KB
-rwxr-xr-x
infotocap
90.41
KB
-rwxr-xr-x
innochecksum
6.37
MB
-rwxr-xr-x
install
154.41
KB
-rwxr-xr-x
install-info
115.24
KB
-rwxr-xr-x
instmodsh
4.27
KB
-rwxr-xr-x
ionice
30.23
KB
-rwxr-xr-x
ip
597.62
KB
-rwxr-xr-x
ipcmk
34.3
KB
-rwxr-xr-x
ipcrm
34.23
KB
-rwxr-xr-x
ipcs
66.23
KB
-rwxr-xr-x
iptables-xml
96.97
KB
-rwxr-xr-x
ischroot
14.2
KB
-rwxr-xr-x
iscsiadm
394.1
KB
-rwxr-xr-x
join
54.37
KB
-rwxr-xr-x
journalctl
78.24
KB
-rwxr-xr-x
json_pp
4.56
KB
-rwxr-xr-x
jsondiff
1004
B
-rwxr-xr-x
jsonpatch
3.58
KB
-rwxr-xr-x
jsonpatch-jsondiff
1004
B
-rwxr-xr-x
jsonpointer
1.79
KB
-rwxr-xr-x
jsonschema
397
B
-rwxr-xr-x
kbd_mode
14.07
KB
-rwxr-xr-x
kbdinfo
14.07
KB
-rwxr-xr-x
kbxutil
174.97
KB
-rwxr-xr-x
keep-one-running
3.51
KB
-rwxr-xr-x
kernel-install
5.07
KB
-rwxr-xr-x
keyctl
42.38
KB
-rwxr-xr-x
keyring
385
B
-rwxr-xr-x
kill
30.23
KB
-rwxr-xr-x
killall
31.27
KB
-rwxr-xr-x
kmod
170.34
KB
-rwxr-xr-x
kmodsign
22.29
KB
-rwxr-xr-x
landscape-sysinfo
624
B
-rwxr-xr-x
last
50.23
KB
-rwxr-xr-x
lastb
50.23
KB
-rwxr-xr-x
lastlog
31.66
KB
-rwxr-xr-x
lcf
7.6
KB
-rwxr-xr-x
ldd
5.3
KB
-rwxr-xr-x
less
175.84
KB
-rwxr-xr-x
lessecho
14.31
KB
-rwxr-xr-x
lessfile
8.36
KB
-rwxr-xr-x
lesskey
23.72
KB
-rwxr-xr-x
lesspipe
8.36
KB
-rwxr-xr-x
lexgrog
98.95
KB
-rwxr-xr-x
libnetcfg
15.41
KB
-rwxr-xr-x
link
38.34
KB
-rwxr-xr-x
linux-boot-prober
1.54
KB
-rwxr-xr-x
linux-check-removal
3.99
KB
-rwxr-xr-x
linux-update-symlinks
6.17
KB
-rwxr-xr-x
linux-version
2.63
KB
-rwxr-xr-x
linux32
26.5
KB
-rwxr-xr-x
linux64
26.5
KB
-rwxr-xr-x
ln
74.38
KB
-rwxr-xr-x
lnstat
30.51
KB
-rwxr-xr-x
loadkeys
210.57
KB
-rwxr-xr-x
loadunimap
34.13
KB
-rwxr-xr-x
locale
57.56
KB
-rwxr-xr-x
locale-check
14.16
KB
-rwxr-xr-x
localectl
26.22
KB
-rwxr-xr-x
localedef
326.96
KB
-rwxr-xr-x
logger
50.82
KB
-rwxr-xr-x
login
55.77
KB
-rwxr-xr-x
loginctl
58.34
KB
-rwxr-xr-x
logname
38.34
KB
-rwxr-xr-x
logresolve
14.16
KB
-rwxr-xr-x
look
14.38
KB
-rwxr-xr-x
lorder
2.82
KB
-rwxr-xr-x
lowntfs-3g
118.86
KB
-rwxr-xr-x
ls
138.81
KB
-rwxr-xr-x
lsattr
14.31
KB
-rwxr-xr-x
lsb_release
3.55
KB
-rwxr-xr-x
lsblk
130.23
KB
-rwxr-xr-x
lscpu
98.23
KB
-rwxr-xr-x
lshw
841.2
KB
-rwxr-xr-x
lsinitramfs
706
B
-rwxr-xr-x
lsipc
94.23
KB
-rwxr-xr-x
lslocks
38.55
KB
-rwxr-xr-x
lslogins
66.23
KB
-rwxr-xr-x
lsmem
66.23
KB
-rwxr-xr-x
lsmod
170.34
KB
-rwxr-xr-x
lsns
50.23
KB
-rwxr-xr-x
lsof
171.63
KB
-rwxr-xr-x
lspci
91.95
KB
-rwxr-xr-x
lspgpot
1.06
KB
-rwxr-xr-x
lsusb
242.51
KB
-rwxr-xr-x
ltrace
301.33
KB
-rwxr-xr-x
lz4
186.23
KB
-rwxr-xr-x
lz4c
186.23
KB
-rwxr-xr-x
lz4cat
186.23
KB
-rwxr-xr-x
lzcat
78.5
KB
-rwxr-xr-x
lzcmp
6.48
KB
-rwxr-xr-x
lzdiff
6.48
KB
-rwxr-xr-x
lzegrep
5.76
KB
-rwxr-xr-x
lzfgrep
5.76
KB
-rwxr-xr-x
lzgrep
5.76
KB
-rwxr-xr-x
lzless
1.76
KB
-rwxr-xr-x
lzma
78.5
KB
-rwxr-xr-x
lzmainfo
14.23
KB
-rwxr-xr-x
lzmore
2.11
KB
-rwxr-xr-x
mailmail3
388
B
-rwxr-xr-x
man
116.83
KB
-rwxr-xr-x
man-recode
26.9
KB
-rwxr-xr-x
mandb
139.09
KB
-rwxr-xr-x
manifest
1.9
KB
-rwxr-xr-x
manpath
38.7
KB
-rwxr-xr-x
mapscrn
26.13
KB
-rwxr-xr-x
mawk
158.74
KB
-rwxr-xr-x
mcookie
34.3
KB
-rwxr-xr-x
md5sum
46.37
KB
-rwxr-xr-x
md5sum.textutils
46.37
KB
-rwxr-xr-x
mdig
50.4
KB
-rwxr-xr-x
mesg
14.23
KB
-rwxr-xr-x
migrate-pubring-from-classic-g...
2.99
KB
-rwxr-xr-x
miniterm
34.28
KB
-rwxr-xr-x
mk_modmap
15.78
KB
-rwxr-xr-x
mkdir
86.34
KB
-rwxr-xr-x
mkfifo
66.34
KB
-rwxr-xr-x
mknod
70.34
KB
-rwxr-xr-x
mksquashfs
205.96
KB
-rwxr-xr-x
mktemp
46.34
KB
-rwxr-xr-x
mmcli
257.27
KB
-rwxr-xr-x
more
42.15
KB
-rwxr-xr-x
mount
54.23
KB
-rwsr-xr-x
mountpoint
14.23
KB
-rwxr-xr-x
mt
86.78
KB
-rwxr-xr-x
mt-gnu
86.78
KB
-rwxr-xr-x
mtr
80.25
KB
-rwxr-xr-x
mtr-packet
38.38
KB
-rwxr-xr-x
mv
146.38
KB
-rwxr-xr-x
my_print_defaults
6.29
MB
-rwxr-xr-x
myisam_ftdump
6.58
MB
-rwxr-xr-x
myisamchk
6.69
MB
-rwxr-xr-x
myisamlog
6.53
MB
-rwxr-xr-x
myisampack
6.6
MB
-rwxr-xr-x
mysql
7.33
MB
-rwxr-xr-x
mysql_config_editor
6.31
MB
-rwxr-xr-x
mysql_migrate_keyring
7.24
MB
-rwxr-xr-x
mysql_secure_installation
7.16
MB
-rwxr-xr-x
mysql_ssl_rsa_setup
6.33
MB
-rwxr-xr-x
mysql_tzinfo_to_sql
6.23
MB
-rwxr-xr-x
mysql_upgrade
7.26
MB
-rwxr-xr-x
mysqladmin
7.17
MB
-rwxr-xr-x
mysqlanalyze
7.18
MB
-rwxr-xr-x
mysqlbinlog
7.62
MB
-rwxr-xr-x
mysqlcheck
7.18
MB
-rwxr-xr-x
mysqld_multi
26.73
KB
-rwxr-xr-x
mysqld_safe
28.45
KB
-rwxr-xr-x
mysqldump
7.25
MB
-rwxr-xr-x
mysqldumpslow
7.54
KB
-rwxr-xr-x
mysqlimport
7.17
MB
-rwxr-xr-x
mysqloptimize
7.18
MB
-rwxr-xr-x
mysqlpump
7.6
MB
-rwxr-xr-x
mysqlrepair
7.18
MB
-rwxr-xr-x
mysqlreport
38.1
KB
-rwxr-xr-x
mysqlshow
7.17
MB
-rwxr-xr-x
mysqlslap
7.18
MB
-rwxr-xr-x
namei
34.23
KB
-rwxr-xr-x
nano
312.63
KB
-rwxr-xr-x
nawk
686.47
KB
-rwxr-xr-x
nc
42.64
KB
-rwxr-xr-x
nc.openbsd
42.64
KB
-rwxr-xr-x
ncal
36.95
KB
-rwxr-xr-x
neqn
913
B
-rwxr-xr-x
netcat
42.64
KB
-rwxr-xr-x
netkit-ftp
106.7
KB
-rwxr-xr-x
netstat
154.58
KB
-rwxr-xr-x
networkctl
74.23
KB
-rwxr-xr-x
networkd-dispatcher
19.71
KB
-rwxr-xr-x
newgrp
43.73
KB
-rwsr-xr-x
ngettext
42.23
KB
-rwxr-xr-x
nice
42.34
KB
-rwxr-xr-x
nisdomainname
26.23
KB
-rwxr-xr-x
nl
42.43
KB
-rwxr-xr-x
nohup
42.34
KB
-rwxr-xr-x
nproc
42.34
KB
-rwxr-xr-x
nroff
3.22
KB
-rwxr-xr-x
nsenter
34.43
KB
-rwxr-xr-x
nslookup
122.81
KB
-rwxr-xr-x
nstat
78.23
KB
-rwxr-xr-x
nsupdate
78.63
KB
-rwxr-xr-x
ntfs-3g
158.89
KB
-rwxr-xr-x
ntfs-3g.probe
14.23
KB
-rwxr-xr-x
ntfscat
34.26
KB
-rwxr-xr-x
ntfscluster
38.26
KB
-rwxr-xr-x
ntfscmp
38.26
KB
-rwxr-xr-x
ntfsdecrypt
50.27
KB
-rwxr-xr-x
ntfsfallocate
38.27
KB
-rwxr-xr-x
ntfsfix
46.27
KB
-rwxr-xr-x
ntfsinfo
58.27
KB
-rwxr-xr-x
ntfsls
35.34
KB
-rwxr-xr-x
ntfsmove
38.26
KB
-rwxr-xr-x
ntfsrecover
118.26
KB
-rwxr-xr-x
ntfssecaudit
94.75
KB
-rwxr-xr-x
ntfstruncate
42.19
KB
-rwxr-xr-x
ntfsusermap
38.18
KB
-rwxr-xr-x
ntfswipe
54.79
KB
-rwxr-xr-x
numfmt
66.4
KB
-rwxr-xr-x
od
70.37
KB
-rwxr-xr-x
oem-getlogs
8.37
KB
-rwxr-xr-x
on_ac_power
2.18
KB
-rwxr-xr-x
openssl
735.68
KB
-rwxr-xr-x
openvt
22.43
KB
-rwxr-xr-x
os-prober
4.44
KB
-rwxr-xr-x
pager
175.84
KB
-rwxr-xr-x
partx
118.23
KB
-rwxr-xr-x
passwd
66.61
KB
-rwsr-xr-x
paste
42.37
KB
-rwxr-xr-x
pastebinit
16.13
KB
-rwxr-xr-x
patch
190.52
KB
-rwxr-xr-x
pathchk
38.34
KB
-rwxr-xr-x
pbget
2.51
KB
-rwxr-xr-x
pbput
2.51
KB
-rwxr-xr-x
pbputs
2.51
KB
-rwxr-xr-x
pdb3
61.27
KB
-rwxr-xr-x
pdb3.8
61.27
KB
-rwxr-xr-x
peekfd
14.15
KB
-rwxr-xr-x
perl
3.32
MB
-rwxr-xr-x
perl5.30-x86_64-linux-gnu
14.3
KB
-rwxr-xr-x
perl5.30.0
3.32
MB
-rwxr-xr-x
perlbug
45.28
KB
-rwxr-xr-x
perldoc
125
B
-rwxr-xr-x
perlivp
10.61
KB
-rwxr-xr-x
perlthanks
45.28
KB
-rwxr-xr-x
perror
7.62
MB
-rwxr-xr-x
pftp
106.7
KB
-rwxr-xr-x
pgrep
30.24
KB
-rwxr-xr-x
phar
14.54
KB
-rwxr-xr-x
phar.phar
14.54
KB
-rwxr-xr-x
phar.phar7.4
14.54
KB
-rwxr-xr-x
phar7.4
14.54
KB
-rwxr-xr-x
php
4.56
MB
-rwxr-xr-x
php7.4
4.56
MB
-rwxr-xr-x
pic
216.34
KB
-rwxr-xr-x
pico
312.63
KB
-rwxr-xr-x
piconv
8.16
KB
-rwxr-xr-x
pidof
26.38
KB
-rwxr-xr-x
pinentry
66.64
KB
-rwxr-xr-x
pinentry-curses
66.64
KB
-rwxr-xr-x
ping
71.07
KB
-rwxr-xr-x
ping4
71.07
KB
-rwxr-xr-x
ping6
71.07
KB
-rwxr-xr-x
pinky
42.37
KB
-rwxr-xr-x
pkaction
18.3
KB
-rwxr-xr-x
pkcheck
22.38
KB
-rwxr-xr-x
pkcon
74.3
KB
-rwxr-xr-x
pkexec
30.3
KB
-rwsr-xr-x
pkill
30.24
KB
-rwxr-xr-x
pkmon
22.3
KB
-rwxr-xr-x
pkttyagent
18.3
KB
-rwxr-xr-x
pl2pm
4.43
KB
-rwxr-xr-x
pldd
22.37
KB
-rwxr-xr-x
plymouth
50.15
KB
-rwxr-xr-x
pmap
34.24
KB
-rwxr-xr-x
pod2html
4.04
KB
-rwxr-xr-x
pod2man
14.68
KB
-rwxr-xr-x
pod2text
10.55
KB
-rwxr-xr-x
pod2usage
3.86
KB
-rwxr-xr-x
podchecker
3.57
KB
-rwxr-xr-x
podselect
2.47
KB
-rwxr-xr-x
pollinate
8.54
KB
-rwxr-xr-x
pr
74.43
KB
-rwxr-xr-x
preconv
66.51
KB
-rwxr-xr-x
print
18.05
KB
-rwxr-xr-x
printenv
38.34
KB
-rwxr-xr-x
printerbanner
22.15
KB
-rwxr-xr-x
printf
58.34
KB
-rwxr-xr-x
prlimit
38.74
KB
-rwxr-xr-x
prove
13.33
KB
-rwxr-xr-x
prtstat
22.23
KB
-rwxr-xr-x
ps
134.46
KB
-rwxr-xr-x
psfaddtable
21.99
KB
-rwxr-xr-x
psfgettable
21.99
KB
-rwxr-xr-x
psfstriptable
21.99
KB
-rwxr-xr-x
psfxtable
21.99
KB
-rwxr-xr-x
pslog
14.15
KB
-rwxr-xr-x
pstree
35.16
KB
-rwxr-xr-x
pstree.x11
35.16
KB
-rwxr-xr-x
ptar
3.47
KB
-rwxr-xr-x
ptardiff
2.57
KB
-rwxr-xr-x
ptargrep
4.29
KB
-rwxr-xr-x
ptx
78.4
KB
-rwxr-xr-x
purge-old-kernels
1.12
KB
-rwxr-xr-x
pwd
42.34
KB
-rwxr-xr-x
pwdx
14.23
KB
-rwxr-xr-x
py3clean
7.63
KB
-rwxr-xr-x
py3compile
11.84
KB
-rwxr-xr-x
py3versions
11.44
KB
-rwxr-xr-x
pydoc3
79
B
-rwxr-xr-x
pydoc3.8
79
B
-rwxr-xr-x
pygettext3
21.03
KB
-rwxr-xr-x
pygettext3.8
21.03
KB
-rwxr-xr-x
pyhtmlizer3
392
B
-rwxr-xr-x
pyjwt3
372
B
-rwxr-xr-x
python3
5.24
MB
-rwxr-xr-x
python3.8
5.24
MB
-rwxr-xr-x
rbash
1.13
MB
-rwxr-xr-x
rcp
114.3
KB
-rwxr-xr-x
rdma
130.23
KB
-rwxr-xr-x
readlink
50.34
KB
-rwxr-xr-x
realpath
50.37
KB
-rwxr-xr-x
red
89
B
-rwxr-xr-x
rename.ul
22.23
KB
-rwxr-xr-x
renice
14.23
KB
-rwxr-xr-x
rescan-scsi-bus.sh
38.15
KB
-rwxr-xr-x
reset
30.31
KB
-rwxr-xr-x
resizecons
22.13
KB
-rwxr-xr-x
resizepart
62.23
KB
-rwxr-xr-x
resolvectl
126.38
KB
-rwxr-xr-x
rev
14.23
KB
-rwxr-xr-x
rgrep
30
B
-rwxr-xr-x
rlogin
774.95
KB
-rwxr-xr-x
rm
70.37
KB
-rwxr-xr-x
rmdir
46.34
KB
-rwxr-xr-x
rnano
312.63
KB
-rwxr-xr-x
rotatelogs
26.23
KB
-rwxr-xr-x
routef
208
B
-rwxr-xr-x
routel
1.62
KB
-rwxr-xr-x
rpcinfo
34.46
KB
-rwxr-xr-x
rrsync
7.07
KB
-rwxr-xr-x
rsh
774.95
KB
-rwxr-xr-x
rsync
500.77
KB
-rwxr-xr-x
rtstat
30.51
KB
-rwxr-xr-x
run-mailcap
18.05
KB
-rwxr-xr-x
run-one
3.51
KB
-rwxr-xr-x
run-one-constantly
3.51
KB
-rwxr-xr-x
run-one-until-failure
3.51
KB
-rwxr-xr-x
run-one-until-success
3.51
KB
-rwxr-xr-x
run-parts
26.51
KB
-rwxr-xr-x
run-this-one
3.51
KB
-rwxr-xr-x
runcon
38.34
KB
-rwxr-xr-x
rview
2.78
MB
-rwxr-xr-x
rvim
2.78
MB
-rwxr-xr-x
savelog
10.24
KB
-rwxr-xr-x
sbattach
58.48
KB
-rwxr-xr-x
sbkeysync
66.7
KB
-rwxr-xr-x
sbsiglist
58.55
KB
-rwxr-xr-x
sbsign
58.55
KB
-rwxr-xr-x
sbvarsign
66.61
KB
-rwxr-xr-x
sbverify
62.48
KB
-rwxr-xr-x
scp
114.3
KB
-rwxr-xr-x
screen
463.16
KB
-rwxr-xr-x
screendump
13.99
KB
-rwxr-xr-x
script
54.23
KB
-rwxr-xr-x
scriptreplay
30.23
KB
-rwxr-xr-x
scsi_logging_level
8.38
KB
-rwxr-xr-x
scsi_mandat
3.52
KB
-rwxr-xr-x
scsi_readcap
1.3
KB
-rwxr-xr-x
scsi_ready
1.09
KB
-rwxr-xr-x
scsi_satl
3.77
KB
-rwxr-xr-x
scsi_start
1.25
KB
-rwxr-xr-x
scsi_stop
1.44
KB
-rwxr-xr-x
scsi_temperature
936
B
-rwxr-xr-x
sdiff
50.09
KB
-rwxr-xr-x
sed
118.45
KB
-rwxr-xr-x
see
18.05
KB
-rwxr-xr-x
select-editor
2.38
KB
-rwxr-xr-x
sensible-browser
1.2
KB
-rwxr-xr-x
sensible-editor
1.14
KB
-rwxr-xr-x
sensible-pager
452
B
-rwxr-xr-x
seq
50.34
KB
-rwxr-xr-x
setarch
26.5
KB
-rwxr-xr-x
setfont
46.13
KB
-rwxr-xr-x
setkeycodes
14.07
KB
-rwxr-xr-x
setleds
14.05
KB
-rwxr-xr-x
setlogcons
14.07
KB
-rwxr-xr-x
setmetamode
14.1
KB
-rwxr-xr-x
setpci
30.23
KB
-rwxr-xr-x
setpriv
46.23
KB
-rwxr-xr-x
setsid
14.23
KB
-rwxr-xr-x
setterm
46.23
KB
-rwxr-xr-x
setupcon
38.31
KB
-rwxr-xr-x
sftp
166.51
KB
-rwxr-xr-x
sg
43.73
KB
-rwsr-xr-x
sg_bg_ctl
14.35
KB
-rwxr-xr-x
sg_compare_and_write
22.76
KB
-rwxr-xr-x
sg_copy_results
23.15
KB
-rwxr-xr-x
sg_dd
50.17
KB
-rwxr-xr-x
sg_decode_sense
22.6
KB
-rwxr-xr-x
sg_emc_trespass
14.15
KB
-rwxr-xr-x
sg_format
35.13
KB
-rwxr-xr-x
sg_get_config
35.24
KB
-rwxr-xr-x
sg_get_lba_status
18.73
KB
-rwxr-xr-x
sg_ident
14.45
KB
-rwxr-xr-x
sg_inq
123.49
KB
-rwxr-xr-x
sg_logs
150.87
KB
-rwxr-xr-x
sg_luns
22.63
KB
-rwxr-xr-x
sg_map
18.15
KB
-rwxr-xr-x
sg_map26
26.55
KB
-rwxr-xr-x
sg_modes
45.62
KB
-rwxr-xr-x
sg_opcodes
34.85
KB
-rwxr-xr-x
sg_persist
35.93
KB
-rwxr-xr-x
sg_prevent
14.35
KB
-rwxr-xr-x
sg_raw
30.66
KB
-rwxr-xr-x
sg_rbuf
22.57
KB
-rwxr-xr-x
sg_rdac
18.16
KB
-rwxr-xr-x
sg_read
26.16
KB
-rwxr-xr-x
sg_read_attr
36.48
KB
-rwxr-xr-x
sg_read_block_limits
14.38
KB
-rwxr-xr-x
sg_read_buffer
26.82
KB
-rwxr-xr-x
sg_read_long
14.54
KB
-rwxr-xr-x
sg_readcap
22.63
KB
-rwxr-xr-x
sg_reassign
14.51
KB
-rwxr-xr-x
sg_referrals
14.51
KB
-rwxr-xr-x
sg_rep_zones
26.59
KB
-rwxr-xr-x
sg_requests
14.57
KB
-rwxr-xr-x
sg_reset
14.51
KB
-rwxr-xr-x
sg_reset_wp
14.45
KB
-rwxr-xr-x
sg_rmsn
14.35
KB
-rwxr-xr-x
sg_rtpg
14.45
KB
-rwxr-xr-x
sg_safte
22.54
KB
-rwxr-xr-x
sg_sanitize
26.85
KB
-rwxr-xr-x
sg_sat_identify
22.57
KB
-rwxr-xr-x
sg_sat_phy_event
18.85
KB
-rwxr-xr-x
sg_sat_read_gplog
18.57
KB
-rwxr-xr-x
sg_sat_set_features
18.54
KB
-rwxr-xr-x
sg_scan
18.16
KB
-rwxr-xr-x
sg_seek
18.73
KB
-rwxr-xr-x
sg_senddiag
27.04
KB
-rwxr-xr-x
sg_ses
119.77
KB
-rwxr-xr-x
sg_ses_microcode
31.23
KB
-rwxr-xr-x
sg_start
18.7
KB
-rwxr-xr-x
sg_stpg
22.57
KB
-rwxr-xr-x
sg_stream_ctl
22.54
KB
-rwxr-xr-x
sg_sync
14.51
KB
-rwxr-xr-x
sg_test_rwbuf
14.45
KB
-rwxr-xr-x
sg_timestamp
18.68
KB
-rwxr-xr-x
sg_turs
14.51
KB
-rwxr-xr-x
sg_unmap
22.6
KB
-rwxr-xr-x
sg_verify
18.73
KB
-rwxr-xr-x
sg_vpd
114.18
KB
-rwxr-xr-x
sg_wr_mode
22.57
KB
-rwxr-xr-x
sg_write_buffer
27.1
KB
-rwxr-xr-x
sg_write_long
14.6
KB
-rwxr-xr-x
sg_write_same
26.76
KB
-rwxr-xr-x
sg_write_verify
22.63
KB
-rwxr-xr-x
sg_write_x
55.45
KB
-rwxr-xr-x
sg_xcopy
42.16
KB
-rwxr-xr-x
sg_zone
14.65
KB
-rwxr-xr-x
sginfo
71.85
KB
-rwxr-xr-x
sgm_dd
34.16
KB
-rwxr-xr-x
sgp_dd
42.16
KB
-rwxr-xr-x
sh
126.77
KB
-rwxr-xr-x
sha1sum
50.37
KB
-rwxr-xr-x
sha224sum
58.37
KB
-rwxr-xr-x
sha256sum
58.37
KB
-rwxr-xr-x
sha384sum
66.37
KB
-rwxr-xr-x
sha512sum
66.37
KB
-rwxr-xr-x
shasum
9.74
KB
-rwxr-xr-x
showconsolefont
18.07
KB
-rwxr-xr-x
showkey
18.07
KB
-rwxr-xr-x
shred
62.37
KB
-rwxr-xr-x
shuf
58.34
KB
-rwxr-xr-x
skill
30.23
KB
-rwxr-xr-x
slabtop
22.23
KB
-rwxr-xr-x
sleep
38.34
KB
-rwxr-xr-x
slogin
774.95
KB
-rwxr-xr-x
snap
16.3
MB
-rwxr-xr-x
snapctl
6.26
MB
-rwxr-xr-x
snapfuse
46.29
KB
-rwxr-xr-x
snice
30.23
KB
-rwxr-xr-x
soelim
46.51
KB
-rwxr-xr-x
sort
114.63
KB
-rwxr-xr-x
sos
596
B
-rwxr-xr-x
sos-collector
1.04
KB
-rwxr-xr-x
sosreport
1.03
KB
-rwxr-xr-x
splain
18.7
KB
-rwxr-xr-x
split
58.77
KB
-rwxr-xr-x
splitfont
13.99
KB
-rwxr-xr-x
ss
164.84
KB
-rwxr-xr-x
ssh
774.95
KB
-rwxr-xr-x
ssh-add
362.28
KB
-rwxr-xr-x
ssh-agent
342.29
KB
-rwxr-sr-x
ssh-argv0
1.42
KB
-rwxr-xr-x
ssh-copy-id
10.41
KB
-rwxr-xr-x
ssh-import-id
409
B
-rwxr-xr-x
ssh-import-id-gh
785
B
-rwxr-xr-x
ssh-import-id-lp
785
B
-rwxr-xr-x
ssh-keygen
466.3
KB
-rwxr-xr-x
ssh-keyscan
454.3
KB
-rwxr-xr-x
stat
86.37
KB
-rwxr-xr-x
static-sh
2.07
MB
-rwxr-xr-x
stdbuf
50.34
KB
-rwxr-xr-x
strace
1.51
MB
-rwxr-xr-x
strace-log-merge
1.78
KB
-rwxr-xr-x
stty
82.37
KB
-rwxr-xr-x
su
66.23
KB
-rwsr-xr-x
sudo
162.16
KB
-rwsr-xr-x
sudoedit
162.16
KB
-rwsr-xr-x
sudoreplay
63
KB
-rwxr-xr-x
sum
46.34
KB
-rwxr-xr-x
symcryptrun
123.03
KB
-rwxr-xr-x
sync
38.34
KB
-rwxr-xr-x
systemctl
973.23
KB
-rwxr-xr-x
systemd
1.55
MB
-rwxr-xr-x
systemd-analyze
1.51
MB
-rwxr-xr-x
systemd-ask-password
14.34
KB
-rwxr-xr-x
systemd-cat
18.23
KB
-rwxr-xr-x
systemd-cgls
22.33
KB
-rwxr-xr-x
systemd-cgtop
38.24
KB
-rwxr-xr-x
systemd-delta
26.22
KB
-rwxr-xr-x
systemd-detect-virt
18.22
KB
-rwxr-xr-x
systemd-escape
22.22
KB
-rwxr-xr-x
systemd-hwdb
106.52
KB
-rwxr-xr-x
systemd-id128
22.22
KB
-rwxr-xr-x
systemd-inhibit
22.24
KB
-rwxr-xr-x
systemd-machine-id-setup
26.32
KB
-rwxr-xr-x
systemd-mount
50.45
KB
-rwxr-xr-x
systemd-notify
18.23
KB
-rwxr-xr-x
systemd-path
18.22
KB
-rwxr-xr-x
systemd-resolve
126.38
KB
-rwxr-xr-x
systemd-run
58.42
KB
-rwxr-xr-x
systemd-socket-activate
26.22
KB
-rwxr-xr-x
systemd-stdio-bridge
22.23
KB
-rwxr-xr-x
systemd-sysusers
54.52
KB
-rwxr-xr-x
systemd-tmpfiles
86.41
KB
-rwxr-xr-x
systemd-tty-ask-password-agent
30.22
KB
-rwxr-xr-x
systemd-umount
50.45
KB
-rwxr-xr-x
tabs
18.3
KB
-rwxr-xr-x
tac
42.34
KB
-rwxr-xr-x
tail
70.4
KB
-rwxr-xr-x
tar
437.61
KB
-rwxr-xr-x
taskset
34.23
KB
-rwxr-xr-x
tbl
138.51
KB
-rwxr-xr-x
tee
42.37
KB
-rwxr-xr-x
telnet
112.67
KB
-rwxr-xr-x
telnet.netkit
112.67
KB
-rwxr-xr-x
tempfile
14.02
KB
-rwxr-xr-x
test
54.34
KB
-rwxr-xr-x
tic
90.41
KB
-rwxr-xr-x
time
14.38
KB
-rwxr-xr-x
timedatectl
46.22
KB
-rwxr-xr-x
timeout
42.77
KB
-rwxr-xr-x
tkconch3
386
B
-rwxr-xr-x
tload
22.24
KB
-rwxr-xr-x
tmux
675.97
KB
-rwxr-xr-x
toe
22.3
KB
-rwxr-xr-x
top
126.05
KB
-rwxr-xr-x
touch
98.37
KB
-rwxr-xr-x
tput
26.34
KB
-rwxr-xr-x
tr
50.34
KB
-rwxr-xr-x
tracepath
18.15
KB
-rwxr-xr-x
traceroute6
26.15
KB
-rwxr-xr-x
traceroute6.iputils
26.15
KB
-rwxr-xr-x
trial3
382
B
-rwxr-xr-x
troff
735.91
KB
-rwxr-xr-x
true
38.34
KB
-rwxr-xr-x
truncate
42.34
KB
-rwxr-xr-x
tset
30.31
KB
-rwxr-xr-x
tsort
42.34
KB
-rwxr-xr-x
tty
38.34
KB
-rwxr-xr-x
twist3
382
B
-rwxr-xr-x
twistd3
384
B
-rwxr-xr-x
tzselect
15.02
KB
-rwxr-xr-x
ua
445
B
-rwxr-xr-x
ubuntu-advantage
445
B
-rwxr-xr-x
ubuntu-bug
2.5
KB
-rwxr-xr-x
ubuntu-core-launcher
151.45
KB
-rwsr-xr-x
ubuntu-distro-info
22.89
KB
-rwxr-xr-x
ubuntu-security-status
23.2
KB
-rwxr-xr-x
ucf
39.73
KB
-rwxr-xr-x
ucfq
18.91
KB
-rwxr-xr-x
ucfr
10.47
KB
-rwxr-xr-x
udevadm
931.2
KB
-rwxr-xr-x
udisksctl
58.38
KB
-rwxr-xr-x
ul
18.16
KB
-rwxr-xr-x
ulockmgr_server
18.15
KB
-rwxr-xr-x
umount
38.23
KB
-rwsr-xr-x
uname
38.37
KB
-rwxr-xr-x
unattended-upgrade
96.99
KB
-rwxr-xr-x
unattended-upgrades
96.99
KB
-rwxr-xr-x
uncompress
2.29
KB
-rwxr-xr-x
unexpand
42.37
KB
-rwxr-xr-x
unicode_start
2.7
KB
-rwxr-xr-x
unicode_stop
530
B
-rwxr-xr-x
uniq
50.37
KB
-rwxr-xr-x
unlink
38.34
KB
-rwxr-xr-x
unlz4
186.23
KB
-rwxr-xr-x
unlzma
78.5
KB
-rwxr-xr-x
unmkinitramfs
3.59
KB
-rwxr-xr-x
unshare
42.43
KB
-rwxr-xr-x
unsquashfs
112.12
KB
-rwxr-xr-x
unxz
78.5
KB
-rwxr-xr-x
unzip
182.29
KB
-rwxr-xr-x
unzipsfx
82.27
KB
-rwxr-xr-x
update-alternatives
54.41
KB
-rwxr-xr-x
update-mime-database
58.37
KB
-rwxr-xr-x
upower
22.15
KB
-rwxr-xr-x
uptime
14.23
KB
-rwxr-xr-x
usb-devices
4
KB
-rwxr-xr-x
usbhid-dump
30.38
KB
-rwxr-xr-x
usbreset
14.3
KB
-rwxr-xr-x
users
38.34
KB
-rwxr-xr-x
utmpdump
30.23
KB
-rwxr-xr-x
uuidgen
14.23
KB
-rwxr-xr-x
uuidparse
38.23
KB
-rwxr-xr-x
vcs-run
6.75
KB
-rwxr-xr-x
vdir
138.81
KB
-rwxr-xr-x
vi
2.78
MB
-rwxr-xr-x
view
2.78
MB
-rwxr-xr-x
vigpg
2.58
KB
-rwxr-xr-x
vim
2.78
MB
-rwxr-xr-x
vim.basic
2.78
MB
-rwxr-xr-x
vim.tiny
1.29
MB
-rwxr-xr-x
vimdiff
2.78
MB
-rwxr-xr-x
vimtutor
2.07
KB
-rwxr-xr-x
vm-support
10.37
KB
-rwxr-xr-x
vmhgfs-fuse
54.8
KB
-rwxr-xr-x
vmstat
38.25
KB
-rwxr-xr-x
vmtoolsd
74.56
KB
-rwxr-xr-x
vmware-alias-import
70.53
KB
-rwxr-xr-x
vmware-checkvm
14.38
KB
-rwxr-xr-x
vmware-hgfsclient
14.38
KB
-rwxr-xr-x
vmware-namespace-cmd
22.3
KB
-rwxr-xr-x
vmware-rpctool
30.3
KB
-rwxr-xr-x
vmware-toolbox-cmd
58.59
KB
-rwxr-xr-x
vmware-vgauth-cmd
18.3
KB
-rwxr-xr-x
vmware-vmblock-fuse
22.72
KB
-rwxr-xr-x
vmware-xferlogs
56.4
KB
-rwxr-xr-x
volname
14.15
KB
-rwxr-xr-x
w
22.23
KB
-rwxr-xr-x
w.procps
22.23
KB
-rwxr-xr-x
wall
34.23
KB
-rwxr-xr-x
watch
26.57
KB
-rwxr-xr-x
watchgnupg
18.3
KB
-rwxr-xr-x
wc
46.34
KB
-rwxr-xr-x
wdctl
34.23
KB
-rwxr-xr-x
wget
531.71
KB
-rwxr-xr-x
whatis
55.21
KB
-rwxr-xr-x
whereis
34.66
KB
-rwxr-xr-x
which
946
B
-rwxr-xr-x
whiptail
34.16
KB
-rwxr-xr-x
who
58.37
KB
-rwxr-xr-x
whoami
38.34
KB
-rwxr-xr-x
wifi-status
2.06
KB
-rwxr-xr-x
write
14.15
KB
-rwxr-sr-x
x86_64
26.5
KB
-rwxr-xr-x
xargs
74.37
KB
-rwxr-xr-x
xauth
54.97
KB
-rwxr-xr-x
xdg-user-dir
234
B
-rwxr-xr-x
xdg-user-dirs-update
26.07
KB
-rwxr-xr-x
xsubpp
5.04
KB
-rwxr-xr-x
xxd
18.27
KB
-rwxr-xr-x
xz
78.5
KB
-rwxr-xr-x
xzcat
78.5
KB
-rwxr-xr-x
xzcmp
6.48
KB
-rwxr-xr-x
xzdiff
6.48
KB
-rwxr-xr-x
xzegrep
5.76
KB
-rwxr-xr-x
xzfgrep
5.76
KB
-rwxr-xr-x
xzgrep
5.76
KB
-rwxr-xr-x
xzless
1.76
KB
-rwxr-xr-x
xzmore
2.11
KB
-rwxr-xr-x
yes
38.34
KB
-rwxr-xr-x
ypdomainname
26.23
KB
-rwxr-xr-x
zcat
1.94
KB
-rwxr-xr-x
zcmp
1.64
KB
-rwxr-xr-x
zdiff
5.76
KB
-rwxr-xr-x
zdump
26.21
KB
-rwxr-xr-x
zegrep
29
B
-rwxr-xr-x
zfgrep
29
B
-rwxr-xr-x
zforce
2.03
KB
-rwxr-xr-x
zgrep
7.91
KB
-rwxr-xr-x
zip
211.19
KB
-rwxr-xr-x
zipcloak
91.62
KB
-rwxr-xr-x
zipdetails
49.53
KB
-rwxr-xr-x
zipgrep
2.88
KB
-rwxr-xr-x
zipinfo
182.29
KB
-rwxr-xr-x
zipnote
87.39
KB
-rwxr-xr-x
zipsplit
91.39
KB
-rwxr-xr-x
zless
2.15
KB
-rwxr-xr-x
zmore
1.8
KB
-rwxr-xr-x
znew
4.47
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : miniterm
#!/usr/bin/python3 # # Very simple serial terminal # # This file is part of pySerial. https://github.com/pyserial/pyserial # (C)2002-2015 Chris Liechti <cliechti@gmx.net> # # SPDX-License-Identifier: BSD-3-Clause import codecs import os import sys import threading import serial from serial.tools.list_ports import comports from serial.tools import hexlify_codec # pylint: disable=wrong-import-order,wrong-import-position codecs.register(lambda c: hexlify_codec.getregentry() if c == 'hexlify' else None) try: raw_input except NameError: # pylint: disable=redefined-builtin,invalid-name raw_input = input # in python3 it's "raw" unichr = chr def key_description(character): """generate a readable description for a key""" ascii_code = ord(character) if ascii_code < 32: return 'Ctrl+{:c}'.format(ord('@') + ascii_code) else: return repr(character) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - class ConsoleBase(object): """OS abstraction for console (input/output codec, no echo)""" def __init__(self): if sys.version_info >= (3, 0): self.byte_output = sys.stdout.buffer else: self.byte_output = sys.stdout self.output = sys.stdout def setup(self): """Set console to read single characters, no echo""" def cleanup(self): """Restore default console settings""" def getkey(self): """Read a single key from the console""" return None def write_bytes(self, byte_string): """Write bytes (already encoded)""" self.byte_output.write(byte_string) self.byte_output.flush() def write(self, text): """Write string""" self.output.write(text) self.output.flush() def cancel(self): """Cancel getkey operation""" # - - - - - - - - - - - - - - - - - - - - - - - - # context manager: # switch terminal temporary to normal mode (e.g. to get user input) def __enter__(self): self.cleanup() return self def __exit__(self, *args, **kwargs): self.setup() if os.name == 'nt': # noqa import msvcrt import ctypes class Out(object): """file-like wrapper that uses os.write""" def __init__(self, fd): self.fd = fd def flush(self): pass def write(self, s): os.write(self.fd, s) class Console(ConsoleBase): def __init__(self): super(Console, self).__init__() self._saved_ocp = ctypes.windll.kernel32.GetConsoleOutputCP() self._saved_icp = ctypes.windll.kernel32.GetConsoleCP() ctypes.windll.kernel32.SetConsoleOutputCP(65001) ctypes.windll.kernel32.SetConsoleCP(65001) self.output = codecs.getwriter('UTF-8')(Out(sys.stdout.fileno()), 'replace') # the change of the code page is not propagated to Python, manually fix it sys.stderr = codecs.getwriter('UTF-8')(Out(sys.stderr.fileno()), 'replace') sys.stdout = self.output self.output.encoding = 'UTF-8' # needed for input def __del__(self): ctypes.windll.kernel32.SetConsoleOutputCP(self._saved_ocp) ctypes.windll.kernel32.SetConsoleCP(self._saved_icp) def getkey(self): while True: z = msvcrt.getwch() if z == unichr(13): return unichr(10) elif z in (unichr(0), unichr(0x0e)): # functions keys, ignore msvcrt.getwch() else: return z def cancel(self): # CancelIo, CancelSynchronousIo do not seem to work when using # getwch, so instead, send a key to the window with the console hwnd = ctypes.windll.kernel32.GetConsoleWindow() ctypes.windll.user32.PostMessageA(hwnd, 0x100, 0x0d, 0) elif os.name == 'posix': import atexit import termios import fcntl class Console(ConsoleBase): def __init__(self): super(Console, self).__init__() self.fd = sys.stdin.fileno() self.old = termios.tcgetattr(self.fd) atexit.register(self.cleanup) if sys.version_info < (3, 0): self.enc_stdin = codecs.getreader(sys.stdin.encoding)(sys.stdin) else: self.enc_stdin = sys.stdin def setup(self): new = termios.tcgetattr(self.fd) new[3] = new[3] & ~termios.ICANON & ~termios.ECHO & ~termios.ISIG new[6][termios.VMIN] = 1 new[6][termios.VTIME] = 0 termios.tcsetattr(self.fd, termios.TCSANOW, new) def getkey(self): c = self.enc_stdin.read(1) if c == unichr(0x7f): c = unichr(8) # map the BS key (which yields DEL) to backspace return c def cancel(self): fcntl.ioctl(self.fd, termios.TIOCSTI, b'\0') def cleanup(self): termios.tcsetattr(self.fd, termios.TCSAFLUSH, self.old) else: raise NotImplementedError( 'Sorry no implementation for your platform ({}) available.'.format(sys.platform)) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - class Transform(object): """do-nothing: forward all data unchanged""" def rx(self, text): """text received from serial port""" return text def tx(self, text): """text to be sent to serial port""" return text def echo(self, text): """text to be sent but displayed on console""" return text class CRLF(Transform): """ENTER sends CR+LF""" def tx(self, text): return text.replace('\n', '\r\n') class CR(Transform): """ENTER sends CR""" def rx(self, text): return text.replace('\r', '\n') def tx(self, text): return text.replace('\n', '\r') class LF(Transform): """ENTER sends LF""" class NoTerminal(Transform): """remove typical terminal control codes from input""" REPLACEMENT_MAP = dict((x, 0x2400 + x) for x in range(32) if unichr(x) not in '\r\n\b\t') REPLACEMENT_MAP.update( { 0x7F: 0x2421, # DEL 0x9B: 0x2425, # CSI }) def rx(self, text): return text.translate(self.REPLACEMENT_MAP) echo = rx class NoControls(NoTerminal): """Remove all control codes, incl. CR+LF""" REPLACEMENT_MAP = dict((x, 0x2400 + x) for x in range(32)) REPLACEMENT_MAP.update( { 0x20: 0x2423, # visual space 0x7F: 0x2421, # DEL 0x9B: 0x2425, # CSI }) class Printable(Transform): """Show decimal code for all non-ASCII characters and replace most control codes""" def rx(self, text): r = [] for c in text: if ' ' <= c < '\x7f' or c in '\r\n\b\t': r.append(c) elif c < ' ': r.append(unichr(0x2400 + ord(c))) else: r.extend(unichr(0x2080 + ord(d) - 48) for d in '{:d}'.format(ord(c))) r.append(' ') return ''.join(r) echo = rx class Colorize(Transform): """Apply different colors for received and echo""" def __init__(self): # XXX make it configurable, use colorama? self.input_color = '\x1b[37m' self.echo_color = '\x1b[31m' def rx(self, text): return self.input_color + text def echo(self, text): return self.echo_color + text class DebugIO(Transform): """Print what is sent and received""" def rx(self, text): sys.stderr.write(' [RX:{}] '.format(repr(text))) sys.stderr.flush() return text def tx(self, text): sys.stderr.write(' [TX:{}] '.format(repr(text))) sys.stderr.flush() return text # other ideas: # - add date/time for each newline # - insert newline after: a) timeout b) packet end character EOL_TRANSFORMATIONS = { 'crlf': CRLF, 'cr': CR, 'lf': LF, } TRANSFORMATIONS = { 'direct': Transform, # no transformation 'default': NoTerminal, 'nocontrol': NoControls, 'printable': Printable, 'colorize': Colorize, 'debug': DebugIO, } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - def ask_for_port(): """\ Show a list of ports and ask the user for a choice. To make selection easier on systems with long device names, also allow the input of an index. """ sys.stderr.write('\n--- Available ports:\n') ports = [] for n, (port, desc, hwid) in enumerate(sorted(comports()), 1): sys.stderr.write('--- {:2}: {:20} {!r}\n'.format(n, port, desc)) ports.append(port) while True: port = raw_input('--- Enter port index or full name: ') try: index = int(port) - 1 if not 0 <= index < len(ports): sys.stderr.write('--- Invalid index!\n') continue except ValueError: pass else: port = ports[index] return port class Miniterm(object): """\ Terminal application. Copy data from serial port to console and vice versa. Handle special keys from the console to show menu etc. """ def __init__(self, serial_instance, echo=False, eol='crlf', filters=()): self.console = Console() self.serial = serial_instance self.echo = echo self.raw = False self.input_encoding = 'UTF-8' self.output_encoding = 'UTF-8' self.eol = eol self.filters = filters self.update_transformations() self.exit_character = 0x1d # GS/CTRL+] self.menu_character = 0x14 # Menu: CTRL+T self.alive = None self._reader_alive = None self.receiver_thread = None self.rx_decoder = None self.tx_decoder = None def _start_reader(self): """Start reader thread""" self._reader_alive = True # start serial->console thread self.receiver_thread = threading.Thread(target=self.reader, name='rx') self.receiver_thread.daemon = True self.receiver_thread.start() def _stop_reader(self): """Stop reader thread only, wait for clean exit of thread""" self._reader_alive = False if hasattr(self.serial, 'cancel_read'): self.serial.cancel_read() self.receiver_thread.join() def start(self): """start worker threads""" self.alive = True self._start_reader() # enter console->serial loop self.transmitter_thread = threading.Thread(target=self.writer, name='tx') self.transmitter_thread.daemon = True self.transmitter_thread.start() self.console.setup() def stop(self): """set flag to stop worker threads""" self.alive = False def join(self, transmit_only=False): """wait for worker threads to terminate""" self.transmitter_thread.join() if not transmit_only: if hasattr(self.serial, 'cancel_read'): self.serial.cancel_read() self.receiver_thread.join() def close(self): self.serial.close() def update_transformations(self): """take list of transformation classes and instantiate them for rx and tx""" transformations = [EOL_TRANSFORMATIONS[self.eol]] + [TRANSFORMATIONS[f] for f in self.filters] self.tx_transformations = [t() for t in transformations] self.rx_transformations = list(reversed(self.tx_transformations)) def set_rx_encoding(self, encoding, errors='replace'): """set encoding for received data""" self.input_encoding = encoding self.rx_decoder = codecs.getincrementaldecoder(encoding)(errors) def set_tx_encoding(self, encoding, errors='replace'): """set encoding for transmitted data""" self.output_encoding = encoding self.tx_encoder = codecs.getincrementalencoder(encoding)(errors) def dump_port_settings(self): """Write current settings to sys.stderr""" sys.stderr.write("\n--- Settings: {p.name} {p.baudrate},{p.bytesize},{p.parity},{p.stopbits}\n".format( p=self.serial)) sys.stderr.write('--- RTS: {:8} DTR: {:8} BREAK: {:8}\n'.format( ('active' if self.serial.rts else 'inactive'), ('active' if self.serial.dtr else 'inactive'), ('active' if self.serial.break_condition else 'inactive'))) try: sys.stderr.write('--- CTS: {:8} DSR: {:8} RI: {:8} CD: {:8}\n'.format( ('active' if self.serial.cts else 'inactive'), ('active' if self.serial.dsr else 'inactive'), ('active' if self.serial.ri else 'inactive'), ('active' if self.serial.cd else 'inactive'))) except serial.SerialException: # on RFC 2217 ports, it can happen if no modem state notification was # yet received. ignore this error. pass sys.stderr.write('--- software flow control: {}\n'.format('active' if self.serial.xonxoff else 'inactive')) sys.stderr.write('--- hardware flow control: {}\n'.format('active' if self.serial.rtscts else 'inactive')) sys.stderr.write('--- serial input encoding: {}\n'.format(self.input_encoding)) sys.stderr.write('--- serial output encoding: {}\n'.format(self.output_encoding)) sys.stderr.write('--- EOL: {}\n'.format(self.eol.upper())) sys.stderr.write('--- filters: {}\n'.format(' '.join(self.filters))) def reader(self): """loop and copy serial->console""" try: while self.alive and self._reader_alive: # read all that is there or wait for one byte data = self.serial.read(self.serial.in_waiting or 1) if data: if self.raw: self.console.write_bytes(data) else: text = self.rx_decoder.decode(data) for transformation in self.rx_transformations: text = transformation.rx(text) self.console.write(text) except serial.SerialException: self.alive = False self.console.cancel() raise # XXX handle instead of re-raise? def writer(self): """\ Loop and copy console->serial until self.exit_character character is found. When self.menu_character is found, interpret the next key locally. """ menu_active = False try: while self.alive: try: c = self.console.getkey() except KeyboardInterrupt: c = '\x03' if not self.alive: break if menu_active: self.handle_menu_key(c) menu_active = False elif c == self.menu_character: menu_active = True # next char will be for menu elif c == self.exit_character: self.stop() # exit app break else: #~ if self.raw: text = c for transformation in self.tx_transformations: text = transformation.tx(text) self.serial.write(self.tx_encoder.encode(text)) if self.echo: echo_text = c for transformation in self.tx_transformations: echo_text = transformation.echo(echo_text) self.console.write(echo_text) except: self.alive = False raise def handle_menu_key(self, c): """Implement a simple menu / settings""" if c == self.menu_character or c == self.exit_character: # Menu/exit character again -> send itself self.serial.write(self.tx_encoder.encode(c)) if self.echo: self.console.write(c) elif c == '\x15': # CTRL+U -> upload file self.upload_file() elif c in '\x08hH?': # CTRL+H, h, H, ? -> Show help sys.stderr.write(self.get_help_text()) elif c == '\x12': # CTRL+R -> Toggle RTS self.serial.rts = not self.serial.rts sys.stderr.write('--- RTS {} ---\n'.format('active' if self.serial.rts else 'inactive')) elif c == '\x04': # CTRL+D -> Toggle DTR self.serial.dtr = not self.serial.dtr sys.stderr.write('--- DTR {} ---\n'.format('active' if self.serial.dtr else 'inactive')) elif c == '\x02': # CTRL+B -> toggle BREAK condition self.serial.break_condition = not self.serial.break_condition sys.stderr.write('--- BREAK {} ---\n'.format('active' if self.serial.break_condition else 'inactive')) elif c == '\x05': # CTRL+E -> toggle local echo self.echo = not self.echo sys.stderr.write('--- local echo {} ---\n'.format('active' if self.echo else 'inactive')) elif c == '\x06': # CTRL+F -> edit filters self.change_filter() elif c == '\x0c': # CTRL+L -> EOL mode modes = list(EOL_TRANSFORMATIONS) # keys eol = modes.index(self.eol) + 1 if eol >= len(modes): eol = 0 self.eol = modes[eol] sys.stderr.write('--- EOL: {} ---\n'.format(self.eol.upper())) self.update_transformations() elif c == '\x01': # CTRL+A -> set encoding self.change_encoding() elif c == '\x09': # CTRL+I -> info self.dump_port_settings() #~ elif c == '\x01': # CTRL+A -> cycle escape mode #~ elif c == '\x0c': # CTRL+L -> cycle linefeed mode elif c in 'pP': # P -> change port self.change_port() elif c in 'sS': # S -> suspend / open port temporarily self.suspend_port() elif c in 'bB': # B -> change baudrate self.change_baudrate() elif c == '8': # 8 -> change to 8 bits self.serial.bytesize = serial.EIGHTBITS self.dump_port_settings() elif c == '7': # 7 -> change to 8 bits self.serial.bytesize = serial.SEVENBITS self.dump_port_settings() elif c in 'eE': # E -> change to even parity self.serial.parity = serial.PARITY_EVEN self.dump_port_settings() elif c in 'oO': # O -> change to odd parity self.serial.parity = serial.PARITY_ODD self.dump_port_settings() elif c in 'mM': # M -> change to mark parity self.serial.parity = serial.PARITY_MARK self.dump_port_settings() elif c in 'sS': # S -> change to space parity self.serial.parity = serial.PARITY_SPACE self.dump_port_settings() elif c in 'nN': # N -> change to no parity self.serial.parity = serial.PARITY_NONE self.dump_port_settings() elif c == '1': # 1 -> change to 1 stop bits self.serial.stopbits = serial.STOPBITS_ONE self.dump_port_settings() elif c == '2': # 2 -> change to 2 stop bits self.serial.stopbits = serial.STOPBITS_TWO self.dump_port_settings() elif c == '3': # 3 -> change to 1.5 stop bits self.serial.stopbits = serial.STOPBITS_ONE_POINT_FIVE self.dump_port_settings() elif c in 'xX': # X -> change software flow control self.serial.xonxoff = (c == 'X') self.dump_port_settings() elif c in 'rR': # R -> change hardware flow control self.serial.rtscts = (c == 'R') self.dump_port_settings() else: sys.stderr.write('--- unknown menu character {} --\n'.format(key_description(c))) def upload_file(self): """Ask user for filenname and send its contents""" sys.stderr.write('\n--- File to upload: ') sys.stderr.flush() with self.console: filename = sys.stdin.readline().rstrip('\r\n') if filename: try: with open(filename, 'rb') as f: sys.stderr.write('--- Sending file {} ---\n'.format(filename)) while True: block = f.read(1024) if not block: break self.serial.write(block) # Wait for output buffer to drain. self.serial.flush() sys.stderr.write('.') # Progress indicator. sys.stderr.write('\n--- File {} sent ---\n'.format(filename)) except IOError as e: sys.stderr.write('--- ERROR opening file {}: {} ---\n'.format(filename, e)) def change_filter(self): """change the i/o transformations""" sys.stderr.write('\n--- Available Filters:\n') sys.stderr.write('\n'.join( '--- {:<10} = {.__doc__}'.format(k, v) for k, v in sorted(TRANSFORMATIONS.items()))) sys.stderr.write('\n--- Enter new filter name(s) [{}]: '.format(' '.join(self.filters))) with self.console: new_filters = sys.stdin.readline().lower().split() if new_filters: for f in new_filters: if f not in TRANSFORMATIONS: sys.stderr.write('--- unknown filter: {}\n'.format(repr(f))) break else: self.filters = new_filters self.update_transformations() sys.stderr.write('--- filters: {}\n'.format(' '.join(self.filters))) def change_encoding(self): """change encoding on the serial port""" sys.stderr.write('\n--- Enter new encoding name [{}]: '.format(self.input_encoding)) with self.console: new_encoding = sys.stdin.readline().strip() if new_encoding: try: codecs.lookup(new_encoding) except LookupError: sys.stderr.write('--- invalid encoding name: {}\n'.format(new_encoding)) else: self.set_rx_encoding(new_encoding) self.set_tx_encoding(new_encoding) sys.stderr.write('--- serial input encoding: {}\n'.format(self.input_encoding)) sys.stderr.write('--- serial output encoding: {}\n'.format(self.output_encoding)) def change_baudrate(self): """change the baudrate""" sys.stderr.write('\n--- Baudrate: ') sys.stderr.flush() with self.console: backup = self.serial.baudrate try: self.serial.baudrate = int(sys.stdin.readline().strip()) except ValueError as e: sys.stderr.write('--- ERROR setting baudrate: {} ---\n'.format(e)) self.serial.baudrate = backup else: self.dump_port_settings() def change_port(self): """Have a conversation with the user to change the serial port""" with self.console: try: port = ask_for_port() except KeyboardInterrupt: port = None if port and port != self.serial.port: # reader thread needs to be shut down self._stop_reader() # save settings settings = self.serial.getSettingsDict() try: new_serial = serial.serial_for_url(port, do_not_open=True) # restore settings and open new_serial.applySettingsDict(settings) new_serial.rts = self.serial.rts new_serial.dtr = self.serial.dtr new_serial.open() new_serial.break_condition = self.serial.break_condition except Exception as e: sys.stderr.write('--- ERROR opening new port: {} ---\n'.format(e)) new_serial.close() else: self.serial.close() self.serial = new_serial sys.stderr.write('--- Port changed to: {} ---\n'.format(self.serial.port)) # and restart the reader thread self._start_reader() def suspend_port(self): """\ open port temporarily, allow reconnect, exit and port change to get out of the loop """ # reader thread needs to be shut down self._stop_reader() self.serial.close() sys.stderr.write('\n--- Port closed: {} ---\n'.format(self.serial.port)) do_change_port = False while not self.serial.is_open: sys.stderr.write('--- Quit: {exit} | p: port change | any other key to reconnect ---\n'.format( exit=key_description(self.exit_character))) k = self.console.getkey() if k == self.exit_character: self.stop() # exit app break elif k in 'pP': do_change_port = True break try: self.serial.open() except Exception as e: sys.stderr.write('--- ERROR opening port: {} ---\n'.format(e)) if do_change_port: self.change_port() else: # and restart the reader thread self._start_reader() sys.stderr.write('--- Port opened: {} ---\n'.format(self.serial.port)) def get_help_text(self): """return the help text""" # help text, starts with blank line! return """ --- pySerial ({version}) - miniterm - help --- --- {exit:8} Exit program --- {menu:8} Menu escape key, followed by: --- Menu keys: --- {menu:7} Send the menu character itself to remote --- {exit:7} Send the exit character itself to remote --- {info:7} Show info --- {upload:7} Upload file (prompt will be shown) --- {repr:7} encoding --- {filter:7} edit filters --- Toggles: --- {rts:7} RTS {dtr:7} DTR {brk:7} BREAK --- {echo:7} echo {eol:7} EOL --- --- Port settings ({menu} followed by the following): --- p change port --- 7 8 set data bits --- N E O S M change parity (None, Even, Odd, Space, Mark) --- 1 2 3 set stop bits (1, 2, 1.5) --- b change baud rate --- x X disable/enable software flow control --- r R disable/enable hardware flow control """.format(version=getattr(serial, 'VERSION', 'unknown version'), exit=key_description(self.exit_character), menu=key_description(self.menu_character), rts=key_description('\x12'), dtr=key_description('\x04'), brk=key_description('\x02'), echo=key_description('\x05'), info=key_description('\x09'), upload=key_description('\x15'), repr=key_description('\x01'), filter=key_description('\x06'), eol=key_description('\x0c')) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # default args can be used to override when calling main() from an other script # e.g to create a miniterm-my-device.py def main(default_port=None, default_baudrate=9600, default_rts=None, default_dtr=None): """Command line tool, entry point""" import argparse parser = argparse.ArgumentParser( description="Miniterm - A simple terminal program for the serial port.") parser.add_argument( "port", nargs='?', help="serial port name ('-' to show port list)", default=default_port) parser.add_argument( "baudrate", nargs='?', type=int, help="set baud rate, default: %(default)s", default=default_baudrate) group = parser.add_argument_group("port settings") group.add_argument( "--parity", choices=['N', 'E', 'O', 'S', 'M'], type=lambda c: c.upper(), help="set parity, one of {N E O S M}, default: N", default='N') group.add_argument( "--rtscts", action="store_true", help="enable RTS/CTS flow control (default off)", default=False) group.add_argument( "--xonxoff", action="store_true", help="enable software flow control (default off)", default=False) group.add_argument( "--rts", type=int, help="set initial RTS line state (possible values: 0, 1)", default=default_rts) group.add_argument( "--dtr", type=int, help="set initial DTR line state (possible values: 0, 1)", default=default_dtr) group.add_argument( "--ask", action="store_true", help="ask again for port when open fails", default=False) group = parser.add_argument_group("data handling") group.add_argument( "-e", "--echo", action="store_true", help="enable local echo (default off)", default=False) group.add_argument( "--encoding", dest="serial_port_encoding", metavar="CODEC", help="set the encoding for the serial port (e.g. hexlify, Latin1, UTF-8), default: %(default)s", default='UTF-8') group.add_argument( "-f", "--filter", action="append", metavar="NAME", help="add text transformation", default=[]) group.add_argument( "--eol", choices=['CR', 'LF', 'CRLF'], type=lambda c: c.upper(), help="end of line mode", default='CRLF') group.add_argument( "--raw", action="store_true", help="Do no apply any encodings/transformations", default=False) group = parser.add_argument_group("hotkeys") group.add_argument( "--exit-char", type=int, metavar='NUM', help="Unicode of special character that is used to exit the application, default: %(default)s", default=0x1d) # GS/CTRL+] group.add_argument( "--menu-char", type=int, metavar='NUM', help="Unicode code of special character that is used to control miniterm (menu), default: %(default)s", default=0x14) # Menu: CTRL+T group = parser.add_argument_group("diagnostics") group.add_argument( "-q", "--quiet", action="store_true", help="suppress non-error messages", default=False) group.add_argument( "--develop", action="store_true", help="show Python traceback on error", default=False) args = parser.parse_args() if args.menu_char == args.exit_char: parser.error('--exit-char can not be the same as --menu-char') if args.filter: if 'help' in args.filter: sys.stderr.write('Available filters:\n') sys.stderr.write('\n'.join( '{:<10} = {.__doc__}'.format(k, v) for k, v in sorted(TRANSFORMATIONS.items()))) sys.stderr.write('\n') sys.exit(1) filters = args.filter else: filters = ['default'] while True: # no port given on command line -> ask user now if args.port is None or args.port == '-': try: args.port = ask_for_port() except KeyboardInterrupt: sys.stderr.write('\n') parser.error('user aborted and port is not given') else: if not args.port: parser.error('port is not given') try: serial_instance = serial.serial_for_url( args.port, args.baudrate, parity=args.parity, rtscts=args.rtscts, xonxoff=args.xonxoff, do_not_open=True) if not hasattr(serial_instance, 'cancel_read'): # enable timeout for alive flag polling if cancel_read is not available serial_instance.timeout = 1 if args.dtr is not None: if not args.quiet: sys.stderr.write('--- forcing DTR {}\n'.format('active' if args.dtr else 'inactive')) serial_instance.dtr = args.dtr if args.rts is not None: if not args.quiet: sys.stderr.write('--- forcing RTS {}\n'.format('active' if args.rts else 'inactive')) serial_instance.rts = args.rts serial_instance.open() except serial.SerialException as e: sys.stderr.write('could not open port {}: {}\n'.format(repr(args.port), e)) if args.develop: raise if not args.ask: sys.exit(1) else: args.port = '-' else: break miniterm = Miniterm( serial_instance, echo=args.echo, eol=args.eol.lower(), filters=filters) miniterm.exit_character = unichr(args.exit_char) miniterm.menu_character = unichr(args.menu_char) miniterm.raw = args.raw miniterm.set_rx_encoding(args.serial_port_encoding) miniterm.set_tx_encoding(args.serial_port_encoding) if not args.quiet: sys.stderr.write('--- Miniterm on {p.name} {p.baudrate},{p.bytesize},{p.parity},{p.stopbits} ---\n'.format( p=miniterm.serial)) sys.stderr.write('--- Quit: {} | Menu: {} | Help: {} followed by {} ---\n'.format( key_description(miniterm.exit_character), key_description(miniterm.menu_character), key_description(miniterm.menu_character), key_description('\x08'))) miniterm.start() try: miniterm.join(True) except KeyboardInterrupt: pass if not args.quiet: sys.stderr.write("\n--- exit ---\n") miniterm.join() miniterm.close() # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if __name__ == '__main__': main()
Close