-
Notifications
You must be signed in to change notification settings - Fork 380
/
smartctl
132 lines (126 loc) · 4.2 KB
/
smartctl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# bash completion for smartctl(8) -*- shell-script -*-
_comp_cmd_smartctl__device()
{
case $cur in
areca* | 3ware* | megaraid* | cciss*)
# shellcheck disable=SC2054
COMPREPLY+=(${cur%%,*},{0..31})
COMPREPLY=($(compgen -W '"${COMPREPLY[@]}"' -- "$cur"))
;;
hpt*)
# shellcheck disable=SC2054
COMPREPLY+=(hpt,{1..4}/{1..8} hpt,{1..4}/{1..8}/{1..5})
COMPREPLY=($(compgen -W '"${COMPREPLY[@]}"' -- "$cur"))
;;
*)
COMPREPLY=($(compgen -W "ata scsi sat usbcypress usbjmicron
usbsunplus marvell areca 3ware hpt megaraid cciss auto test" \
-- "$cur"))
case "${COMPREPLY[@]}" in
areca | 3ware | hpt | megaraid | cciss)
compopt -o nospace
;;
esac
;;
esac
}
_comp_cmd_smartctl__test()
{
[[ $cur == @(pending|scttempint|vendor), ]] && return
COMPREPLY=($(compgen -W 'offline short long conveyance select,
select,redo select,next afterselect,on afterselect,off pending,
scttempint, vendor,' -- "$cur"))
[[ ${COMPREPLY-} == *, ]] && compopt -o nospace
}
_comp_cmd_smartctl__drivedb()
{
local prefix=
if [[ $cur == +* ]]; then
prefix=+
cur="${cur#+}"
fi
_filedir h
[[ $prefix ]] && COMPREPLY=("${COMPREPLY[@]/#/$prefix}")
}
_comp_cmd_smartctl()
{
local cur prev words cword was_split comp_args
_comp_initialize -s -- "$@" || return
local noargopts='!(-*|*[qdTbrnsoSlvFPBt]*)'
# shellcheck disable=SC2254
case $prev in
--quietmode | -${noargopts}q)
COMPREPLY=($(compgen -W 'errorsonly silent noserial' -- "$cur"))
;;
--device | -${noargopts}d)
_comp_cmd_smartctl__device
return
;;
--tolerance | -${noargopts}T)
COMPREPLY=($(
compgen -W 'normal conservative permissive verypermissive' \
-- "$cur"
))
return
;;
--badsum | -${noargopts}b)
COMPREPLY=($(compgen -W 'warn exit ignore' -- "$cur"))
return
;;
--report | -${noargopts}r)
COMPREPLY=($(compgen -W 'ioctl ataioctl scsiioctl' -- "$cur"))
return
;;
--nocheck | -${noargopts}n)
COMPREPLY=($(compgen -W 'never sleep standby idle' -- "$cur"))
return
;;
--smart | --offlineauto | --saveauto | -${noargopts}[soS])
COMPREPLY=($(compgen -W 'on off' -- "$cur"))
return
;;
--log | -${noargopts}l)
COMPREPLY=($(
compgen -W 'error selftest selective directory
background sasphy sasphy,reset sataphy sataphy,reset scttemp
scttempsts scttemphist scterc gplog smartlog xerror xselftest' \
-- "$cur"
))
return
;;
--vendorattribute | -${noargopts}v)
COMPREPLY=($(compgen -W 'help 9,minutes 9,seconds 9,halfminutes
9,temp 192,emergencyretractcyclect 193,loadunload
194,10xCelsius 194,unknown 198,offlinescanuncsectorct
200,writeerrorcount 201,detectedtacount 220,temp' -- "$cur"))
return
;;
--firmwarebug | -${noargopts}F)
COMPREPLY=($(compgen -W 'none samsung samsung2 samsung3 swapid' \
-- "$cur"))
return
;;
--presets | -${noargopts}P)
COMPREPLY=($(compgen -W 'use ignore show showall' -- "$cur"))
return
;;
--drivedb | -${noargopts}B)
_comp_cmd_smartctl__drivedb
return
;;
--test | -${noargopts}t)
_comp_cmd_smartctl__test
return
;;
esac
[[ $was_split ]] && return
if [[ $cur == -* ]]; then
COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur"))
[[ ${COMPREPLY-} == *= ]] && compopt -o nospace
else
: "${cur:=/dev/}"
_filedir
fi
} &&
complete -F _comp_cmd_smartctl smartctl
# ex: filetype=sh