/usr/sbin
NameSizeModeActions
accessdb157920755editdlrm
addgnupghome30790755editdlrm
addpart155200755editdlrm
adduser1411440755editdlrm
agetty580720755editdlrm
alternatives405440755editdlrm
anacron404640755editdlrm
apachectl48080755editdlrm
applygnupgdefaults22210755editdlrm
arp647280755editdlrm
arping279040755editdlrm
arptables2369600755editdlrm
arptables-nft2369600755editdlrm
arptables-nft-restore2369600755editdlrm
arptables-nft-save2369600755editdlrm
arptables-restore2369600755editdlrm
arptables-save2369600755editdlrm
atd320080755editdlrm
atrun700755editdlrm
auditctl528240755editdlrm
auditd1403360755editdlrm
augenrules41460755editdlrm
aureport1231920755editdlrm
ausearch1231600755editdlrm
autrace196320750editdlrm
avcstat157200755editdlrm
badblocks362000755editdlrm
blkdeactivate163550555editdlrm
blkdiscard237600755editdlrm
blkid528480755editdlrm
blkmapd403600755editdlrm
blkzone363040755editdlrm
blockdev321680755editdlrm
bridge1340880755editdlrm
cache_check30462960755editdlrm
cache_dump30462960755editdlrm
cache_metadata_size30462960755editdlrm
cache_repair30462960755editdlrm
cache_restore30462960755editdlrm
cache_writeback30462960755editdlrm
capsh319600755editdlrm
cfdisk986560755editdlrm
chcpu321760755editdlrm
chgpasswd612000755editdlrm
chkconfig448320755editdlrm
chpasswd569680755editdlrm
chronyd3825440755editdlrm
chroot405040755editdlrm
clock612000755editdlrm
consoletype156480755editdlrm
convertquota706640755editdlrm
cracklib-check154720755editdlrm
cracklib-format2550755editdlrm
cracklib-packer154720755editdlrm
cracklib-unpacker154640755editdlrm
create-cracklib-dict9940755editdlrm
crond779920755editdlrm
ctrlaltdel155520755editdlrm
ctstat241600755editdlrm
dcb969600755editdlrm
ddns-confgen279120755editdlrm
debugfs2386240755editdlrm
delpart154800755editdlrm
depmod1695440755editdlrm
devlink1698160755editdlrm
dmeventd530320555editdlrm
dmfilemapd238560555editdlrm
dmsetup1605360555editdlrm
dmstats1605360555editdlrm
dnssec-cds488160755editdlrm
dnssec-checkds9240755editdlrm
dnssec-coverage9260755editdlrm
dnssec-dsfromkey403840755editdlrm
dnssec-importkey362880755editdlrm
dnssec-keyfromlabel403680755editdlrm
dnssec-keygen485840755editdlrm
dnssec-keymgr9220755editdlrm
dnssec-revoke321680755editdlrm
dnssec-settime485760755editdlrm
dnssec-signzone981840755editdlrm
dnssec-verify322000755editdlrm
dosfsck865920755editdlrm
dosfslabel409760755editdlrm
dovecot1474800755editdlrm
dovecot_cpshutdown33440755editdlrm
dpll493120755editdlrm
dumpe2fs320400755editdlrm
e2freefrag155520755editdlrm
e2fsck3646320755editdlrm
e2image444560755editdlrm
e2label1069680755editdlrm
e2mmpstatus320400755editdlrm
e2undo237120755editdlrm
e4crypt320480755editdlrm
e4defrag320080755editdlrm
ebtables2369600755editdlrm
ebtables-nft2369600755editdlrm
ebtables-nft-restore2369600755editdlrm
ebtables-nft-save2369600755editdlrm
ebtables-restore2369600755editdlrm
ebtables-save2369600755editdlrm
ebtables-translate2369600755editdlrm
edquota916480755editdlrm
efibootdump244400755editdlrm
efibootmgr462640755editdlrm
era_check30462960755editdlrm
era_dump30462960755editdlrm
era_invalidate30462960755editdlrm
era_restore30462960755editdlrm
ether-wake514480755editdlrm
ethtool10126960755editdlrm
exicyclog113650755editdlrm
exigrep117100755editdlrm
exim17288484755editdlrm
eximstats1525460755editdlrm
exim_checkaccess49430755editdlrm
exim_dbmbuild230400755editdlrm
exim_dumpdb418720755editdlrm
exim_fixdb463600755editdlrm
exim_lock233280755editdlrm
exim_tidydb334720755editdlrm
exinext82170755editdlrm
exiqgrep67390755editdlrm
exiqsumm64430755editdlrm
exiwhat45240755editdlrm
exportfs701120755editdlrm
faillock237360755editdlrm
fatlabel409760755editdlrm
fcgistarter253040755editdlrm
fdformat237440755editdlrm
fdisk1147600755editdlrm
filefrag196800755editdlrm
findfs155200755editdlrm
firewalld99890755editdlrm
fix-info-dir80370755editdlrm
fixfiles123870755editdlrm
fsadm246020555editdlrm
fsck445920755editdlrm
fsck.cramfs321280755editdlrm
fsck.ext23646320755editdlrm
fsck.ext33646320755editdlrm
fsck.ext43646320755editdlrm
fsck.fat865920755editdlrm
fsck.minix570480755editdlrm
fsck.msdos865920755editdlrm
fsck.vfat865920755editdlrm
fsck.xfs25980755editdlrm
fsfreeze155120755editdlrm
fstrim445440755editdlrm
fuser420720755editdlrm
g13-syshelp907280755editdlrm
genhomedircon328080755editdlrm
genhostid156480755editdlrm
genl1332720755editdlrm
getcap154960755editdlrm
getenforce156400755editdlrm
getpcaps154880755editdlrm
getpidprevcon156560755editdlrm
getpolicyload156480755editdlrm
getsebool156640755editdlrm
groupadd704240755editdlrm
groupdel660800755editdlrm
groupmems571120755editdlrm
groupmod745040755editdlrm
grpck611920755editdlrm
grpconv528000755editdlrm
grpunconv527680755editdlrm
grub2-bios-setup17499040755editdlrm
grub2-get-kernel-settings27460755editdlrm
grub2-install20685200755editdlrm
grub2-macbless17288720755editdlrm
grub2-mkconfig94310755editdlrm
grub2-probe17459840755editdlrm
grub2-reboot48140755editdlrm
grub2-set-bootflag154564755editdlrm
grub2-set-default35380755editdlrm
grub2-set-password28090755editdlrm
grub2-setpassword28090755editdlrm
grub2-switch-to-blscfg90240755editdlrm
grubby2600755editdlrm
gssproxy1278880755editdlrm
halt3055760755editdlrm
htcacheclean540720755editdlrm
httpd11397200755editdlrm
hwclock612000755editdlrm
iconvconfig324320755editdlrm
ifconfig808800755editdlrm
ifdown10970755editdlrm
ifenslave243040755editdlrm
ifstat405520755editdlrm
ifup10660755editdlrm
imunify-notifier103256160755editdlrm
init980400755editdlrm
insmod1695440755editdlrm
install-info1092560755editdlrm
installkernel3230755editdlrm
intel_sdsi229680755editdlrm
ip7929040755editdlrm
ip6tables2369600755editdlrm
ip6tables-nft2369600755editdlrm
ip6tables-nft-restore2369600755editdlrm
ip6tables-nft-save2369600755editdlrm
ip6tables-restore2369600755editdlrm
ip6tables-restore-translate2369600755editdlrm
ip6tables-save2369600755editdlrm
ip6tables-translate2369600755editdlrm
ipmaddr199120755editdlrm
ipset156400755editdlrm
ipset-translate156400755editdlrm
iptables2369600755editdlrm
iptables-nft2369600755editdlrm
iptables-nft-restore2369600755editdlrm
iptables-nft-save2369600755editdlrm
iptables-restore2369600755editdlrm
iptables-restore-translate2369600755editdlrm
iptables-save2369600755editdlrm
iptables-translate2369600755editdlrm
iptunnel199680755editdlrm
irqbalance659920755editdlrm
irqbalance-ui405360755editdlrm
kexec1972160755editdlrm
key.dns_resolver321040755editdlrm
kpartx486640755editdlrm
lchage237200755editdlrm
ldattach278800755editdlrm
ldconfig11764640755editdlrm
lgroupadd154800755editdlrm
lgroupdel154720755editdlrm
lgroupmod236800755editdlrm
lid195920755editdlrm
lnewusers236800755editdlrm
lnstat241600755editdlrm
load_policy154800755editdlrm
logrotate979600755editdlrm
logsave155520755editdlrm
losetup738160755editdlrm
lpasswd236800755editdlrm
lshw8740640755editdlrm
lsmod1695440755editdlrm
lspci999120755editdlrm
luseradd236800755editdlrm
luserdel154800755editdlrm
lusermod236880755editdlrm
lvchange28310720555editdlrm
lvconvert28310720555editdlrm
lvcreate28310720555editdlrm
lvdisplay28310720555editdlrm
lvextend28310720555editdlrm
lvm28310720555editdlrm
lvmconfig28310720555editdlrm
lvmdevices28310720555editdlrm
lvmdiskscan28310720555editdlrm
lvmdump103780555editdlrm
lvmpolld2153440555editdlrm
lvmsadc28310720555editdlrm
lvmsar28310720555editdlrm
lvm_import_vdo237080555editdlrm
lvreduce28310720555editdlrm
lvremove28310720555editdlrm
lvrename28310720555editdlrm
lvresize28310720555editdlrm
lvs28310720555editdlrm
lvscan28310720555editdlrm
makedumpfile4422080755editdlrm
matchpathcon156800755editdlrm
mii-diag247760755editdlrm
mii-tool284480755editdlrm
mkdict2550755editdlrm
mkdosfs537680755editdlrm
mkdumprd124180755editdlrm
mke2fs1357120755editdlrm
mkfs155360755editdlrm
mkfs.cramfs362240755editdlrm
mkfs.ext21357120755editdlrm
mkfs.ext31357120755editdlrm
mkfs.ext41357120755editdlrm
mkfs.fat537680755editdlrm
mkfs.minix446000755editdlrm
mkfs.msdos537680755editdlrm
mkfs.vfat537680755editdlrm
mkfs.xfs4615920755editdlrm
mkhomedir_helper237680755editdlrm
mklost+found154800755editdlrm
mksquashfs2023600755editdlrm
mkswap486400755editdlrm
modinfo1695440755editdlrm
modprobe1695440755editdlrm
modsec-sdbm-util343680750editdlrm
mount.fuse157040755editdlrm
mount.fuse3198320755editdlrm
mount.nfs1029364755editdlrm
mount.nfs41029364755editdlrm
mountstats435190755editdlrm
mysqld566875760755editdlrm
named5581040755editdlrm
named-checkconf403440755editdlrm
named-checkzone402880755editdlrm
named-compilezone402880755editdlrm
named-journalprint154960755editdlrm
named-nzd2nzf154800755editdlrm
nameif159520755editdlrm
NetworkManager38939280755editdlrm
newusers908320755editdlrm
nfsconf408160755editdlrm
nfsdcld572080755editdlrm
nfsdclddb102300755editdlrm
nfsdclnts92710755editdlrm
nfsdcltrack408720755editdlrm
nfsidmap238560755editdlrm
nfsiostat239100755editdlrm
nfsref445600755editdlrm
nfsstat391920755editdlrm
nft278240755editdlrm
nologin155200755editdlrm
nscd1668560755editdlrm
nsec3hash155600755editdlrm
nstat320880755editdlrm
packer154720755editdlrm
pam_console_apply445520755editdlrm
pam_namespace_helper4710755editdlrm
pam_timestamp_check154964755editdlrm
paperconfig41730755editdlrm
parted987040755editdlrm
partprobe157040755editdlrm
partx612000755editdlrm
pdata_tools30462960755editdlrm
pdns_server61628000755editdlrm
pidof238880755editdlrm
ping914720755editdlrm
ping6914720755editdlrm
pivot_root155200755editdlrm
plipconfig157200755editdlrm
poweroff3055760755editdlrm
pure-authd235680755editdlrm
pure-certd234720755editdlrm
pure-config.pl47550755editdlrm
pure-ftpd1813760755editdlrm
pure-ftpwho272160755editdlrm
pure-mrtginfo148960755editdlrm
pure-quotacheck231040755editdlrm
pure-uploadscript233760755editdlrm
pvchange28310720555editdlrm
pvck28310720555editdlrm
pvcreate28310720555editdlrm
pvdisplay28310720555editdlrm
pvmove28310720555editdlrm
pvremove28310720555editdlrm
pvresize28310720555editdlrm
pvs28310720555editdlrm
pvscan28310720555editdlrm
pwck569360755editdlrm
pwconv485840755editdlrm
pwhistory_helper196560755editdlrm
pwunconv485440755editdlrm
quotacheck958640755editdlrm
quotaoff580320755editdlrm
quotaon580320755editdlrm
quotastats157040755editdlrm
rdisc321120755editdlrm
rdma1198720755editdlrm
readprofile238240755editdlrm
reboot3055760755editdlrm
repquota794160755editdlrm
request-key279440755editdlrm
resize2fs692640755editdlrm
resizepart239600755editdlrm
restorecon237440755editdlrm
restorecon_xattr154880755editdlrm
rfkill320960755editdlrm
rmmod1695440755editdlrm
rndc442880755editdlrm
rndc-confgen238160755editdlrm
rotatelogs390480755editdlrm
route673520755editdlrm
rpc.gssd902240755editdlrm
rpc.idmapd488800755editdlrm
rpc.mountd1357360755editdlrm
rpc.nfsd409600755editdlrm
rpc.statd827280755editdlrm
rpcbind613280755editdlrm
rpcctl96450755editdlrm
rpcdebug191040755editdlrm
rpcinfo364320755editdlrm
rsyslogd8262400755editdlrm
rtacct300480755editdlrm
rtcwake361040755editdlrm
rtkitctl156080755editdlrm
rtmon1290800755editdlrm
rtstat241600755editdlrm
runlevel3055760755editdlrm
runq17288484755editdlrm
runuser569440755editdlrm
sasldblistusers2156400755editdlrm
saslpasswd2156080755editdlrm
sefcontext_compile741200755editdlrm
selabel_digest156800755editdlrm
selabel_get_digests_all_partial_matches156960755editdlrm
selabel_lookup156720755editdlrm
selabel_lookup_best_match156800755editdlrm
selabel_partial_match156720755editdlrm
selinuxconlist156720755editdlrm
selinuxdefcon156720755editdlrm
selinuxenabled156400755editdlrm
selinuxexeccon156560755editdlrm
selinux_check_access156800755editdlrm
semanage416140755editdlrm
semodule328080755editdlrm
sendmail185122755editdlrm
service46230755editdlrm
sestatus236800755editdlrm
setcap154880755editdlrm
setenforce156640755editdlrm
setfiles237440755editdlrm
setpci321040755editdlrm
setquota835360755editdlrm
setsebool196080755editdlrm
sfdisk1064800755editdlrm
showmount158480755editdlrm
shutdown3055760755editdlrm
slattach384720755editdlrm
sm-notify530160755editdlrm
smartctl8743280755editdlrm
smartd6302400755editdlrm
ss1344720755editdlrm
sshd4166640755editdlrm
sssd733280755editdlrm
sss_cache360960755editdlrm
start-statd10270755editdlrm
start-stop-daemon498160755editdlrm
suexec385044755editdlrm
sulogin444400755editdlrm
sw-engine-fpm253146800755editdlrm
swaplabel196480755editdlrm
swapoff238240755editdlrm
swapon443520755editdlrm
switch_root237600755editdlrm
sysctl322480755editdlrm
tc6554560755editdlrm
tcpdump13402560755editdlrm
tcpslice280480755editdlrm
telinit3055760755editdlrm
thin_check30462960755editdlrm
thin_delta30462960755editdlrm
thin_dump30462960755editdlrm
thin_ls30462960755editdlrm
thin_metadata_pack30462960755editdlrm
thin_metadata_size30462960755editdlrm
thin_metadata_unpack30462960755editdlrm
thin_migrate30462960755editdlrm
thin_repair30462960755editdlrm
thin_restore30462960755editdlrm
thin_rmap30462960755editdlrm
thin_trim30462960755editdlrm
tipc950240755editdlrm
tmpwatch368960755editdlrm
tracepath196800755editdlrm
tracepath6196800755editdlrm
tsig-keygen279120755editdlrm
tune2fs1069680755editdlrm
udevadm6019600755editdlrm
umount.nfs1029364755editdlrm
umount.nfs41029364755editdlrm
unix_chkpwd238484755editdlrm
unix_update320800700editdlrm
unsquashfs1165360755editdlrm
update-alternatives405440755editdlrm
update-pciids17570755editdlrm
update-smart-drivedb238850755editdlrm
useradd1411440755editdlrm
userdel909680755editdlrm
usermod1327760755editdlrm
validatetrans156560755editdlrm
vdpa367360755editdlrm
vgcfgbackup28310720555editdlrm
vgcfgrestore28310720555editdlrm
vgchange28310720555editdlrm
vgck28310720555editdlrm
vgconvert28310720555editdlrm
vgcreate28310720555editdlrm
vgdisplay28310720555editdlrm
vgexport28310720555editdlrm
vgextend28310720555editdlrm
vgimport28310720555editdlrm
vgimportclone28310720555editdlrm
vgimportdevices28310720555editdlrm
vgmerge28310720555editdlrm
vgmknodes28310720555editdlrm
vgreduce28310720555editdlrm
vgremove28310720555editdlrm
vgrename28310720555editdlrm
vgs28310720555editdlrm
vgscan28310720555editdlrm
vgsplit28310720555editdlrm
vigr595520755editdlrm
vipw595520755editdlrm
visudo2736800755editdlrm
vmcore-dmesg279520755editdlrm
weak-modules343840755editdlrm
whmapi034781120755editdlrm
whmapi134781120755editdlrm
whmlogin23900755editdlrm
wipefs402240755editdlrm
xfs_admin21780755editdlrm
xfs_bmap6990755editdlrm
xfs_copy948400755editdlrm
xfs_db7250720755editdlrm
xfs_estimate155280755editdlrm
xfs_freeze8040755editdlrm
xfs_fsr445520755editdlrm
xfs_growfs446800755editdlrm
xfs_info12980755editdlrm
xfs_io2074560755editdlrm
xfs_logprint903760755editdlrm
xfs_mdrestore279360755editdlrm
xfs_metadump7860755editdlrm
xfs_mkfile10440755editdlrm
xfs_ncheck6890755editdlrm
xfs_quota943120755editdlrm
xfs_repair7027040755editdlrm
xfs_rtcp196000755editdlrm
xfs_spaceman448320755editdlrm
xqmstats156960755editdlrm
xtables-monitor2369600755editdlrm
xtables-nft-multi2369600755editdlrm
zic610560755editdlrm
zramctl572080755editdlrm
Edit: /usr/sbin/nfsdclddb (10230B)
#!/usr/bin/python3 """Tool for manipulating the nfsdcld sqlite database """ __copyright__ = """ Copyright (C) 2019 Scott Mayhew This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. """ import argparse import os import sqlite3 import sys class CldDb(): def __init__(self, path): self.con = sqlite3.connect(path) self.con.row_factory = sqlite3.Row for row in self.con.execute('select value from parameters ' 'where key = "version"'): self.version = int(row['value']) for row in self.con.execute('select * from grace'): self.current = int(row['current']) self.recovery = int(row['recovery']) def __del__(self): self.con.close() def __str__(self): return ('Schema version: {self.version} ' 'current epoch: {self.current} ' 'recovery epoch: {self.recovery}'.format(self=self)) def _print_clients(self, epoch): if epoch: for row in self.con.execute('select * from "rec-{:016x}"' .format(epoch)): if self.version >= 4: if row['princhash'] is not None: princhash = row['princhash'].hex() else: princhash = "(null)" print('id = {}, princhash = {}' .format(row['id'].decode(), princhash)) else: print('id = {}'.format(row['id'].decode())) def print_current_clients(self): print('Clients in current epoch:') self._print_clients(self.current) def print_recovery_clients(self): if self.recovery: print('Clients in recovery epoch:') self._print_clients(self.recovery) def check_bad_table_names(self): bad_names = [] for row in self.con.execute('select name from sqlite_master ' 'where type = "table" ' 'and name like "%rec-%" ' 'and length(name) < 20'): bad_names.append(row['name']) return bad_names def fix_bad_table_names(self): try: self.con.execute('begin exclusive transaction') bad_names = self.check_bad_table_names() for bad_name in bad_names: epoch = int(bad_name.split('-')[1], base=16) if epoch == self.current or epoch == self.recovery: if epoch == self.current: which = 'current' else: which = 'recovery' print('found invalid table name {} for {} epoch' .format(bad_name, which)) self.con.execute('alter table "{}" ' 'rename to "rec-{:016x}"' .format(bad_name, epoch)) print('renamed to rec-{:016x}'.format(epoch)) else: print('found invalid table name {} for unknown epoch {}' .format(bad_name, epoch)) self.con.execute('drop table "{}"'.format(bad_name)) print('dropped table {}'.format(bad_name)) except sqlite3.Error: self.con.rollback() else: self.con.commit() def has_princ_data(self): if self.version < 4: return False for row in self.con.execute('select count(*) ' 'from "rec-{:016x}" ' 'where princhash not null' .format(self.current)): count = row[0] if self.recovery: for row in self.con.execute('select count(*) ' 'from "rec-{:016x}" ' 'where princhash not null' .format(self.current)): count = count + row[0] if count: return True return False def _downgrade_table_v4_to_v3(self, epoch): if not self.con.in_transaction: raise sqlite3.Error try: self.con.execute('create table "new_rec-{:016x}" ' '(id blob primary key)'.format(epoch)) self.con.execute('insert into "new_rec-{:016x}" ' 'select id from "rec-{:016x}"' .format(epoch, epoch)) self.con.execute('drop table "rec-{:016x}"'.format(epoch)) self.con.execute('alter table "new_rec-{:016x}" ' 'rename to "rec-{:016x}"' .format(epoch, epoch)) except sqlite3.Error: raise def downgrade_schema_v4_to_v3(self): try: self.con.execute('begin exclusive transaction') for row in self.con.execute('select value from parameters ' 'where key = "version"'): version = int(row['value']) if version != self.version: raise sqlite3.Error for row in self.con.execute('select * from grace'): current = int(row['current']) recovery = int(row['recovery']) if current != self.current: raise sqlite3.Error if recovery != self.recovery: raise sqlite3.Error self._downgrade_table_v4_to_v3(current) if recovery: self._downgrade_table_v4_to_v3(recovery) self.con.execute('update parameters ' 'set value = "3" ' 'where key = "version"') self.version = 3 except sqlite3.Error: self.con.rollback() print('Downgrade failed') else: self.con.commit() print('Downgrade successful') def nfsdcld_active(): rc = os.system('ps -C nfsdcld >/dev/null 2>/dev/null') if rc == 0: return True return False def fix_table_names_command(db, args): if nfsdcld_active(): print('Warning: nfsdcld is running!') ans = input('Continue? ') if ans.lower() not in ['y', 'yes']: print('Operation canceled.') return bad_names = db.check_bad_table_names() if not bad_names: print('No invalid table names found.') return db.fix_bad_table_names() def downgrade_schema_command(db, args): if nfsdcld_active(): print('Warning: nfsdcld is running!') ans = input('Continue? ') if ans.lower() not in ['y', 'yes']: print('Operation canceled') return if db.version != 4: print('Cannot downgrade database from schema version {}.' .format(db.version)) return if args.version != 3: print('Cannot downgrade to version {}.'.format(args.version)) return bad_names = db.check_bad_table_names() if bad_names: print('Invalid table names detected.') print('Please run "{} fix-table-names" before downgrading the schema.' .format(sys.argv[0])) return if db.has_princ_data(): print('Warning: database has principal data, which will be erased.') ans = input('Continue? ') if ans.lower() not in ['y', 'yes']: print('Operation canceled') return db.downgrade_schema_v4_to_v3() def print_command(db, args): print(str(db)) if not args.summary: bad_names = db.check_bad_table_names() if bad_names: print('Invalid table names detected.') print('Please run "{} fix-table-names".'.format(sys.argv[0])) return db.print_current_clients() db.print_recovery_clients() def main(): parser = argparse.ArgumentParser() parser.add_argument('-p', '--path', default='/var/lib/nfs/nfsdcld/main.sqlite', help='path to the database ' '(default: /var/lib/nfs/nfsdcld/main.sqlite)') subparsers = parser.add_subparsers(help='sub-command help') fix_parser = subparsers.add_parser('fix-table-names', help='fix invalid table names') fix_parser.set_defaults(func=fix_table_names_command) downgrade_parser = subparsers.add_parser('downgrade-schema', help='downgrade database schema') downgrade_parser.add_argument('-v', '--version', type=int, choices=[3], default=3, help='version to downgrade to') downgrade_parser.set_defaults(func=downgrade_schema_command) print_parser = subparsers.add_parser('print', help='print database info') print_parser.add_argument('-s', '--summary', default=False, action='store_true', help='print summary only') print_parser.set_defaults(func=print_command) args = parser.parse_args() if not os.path.exists(args.path): return parser.print_usage() clddb = CldDb(args.path) return args.func(clddb, args) if __name__ == '__main__': if len(sys.argv) == 1: sys.argv.extend(['print', '--summary']) main()