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
|
#!/usr/bin/python
'''
Starts the targetcli CLI shell.
This file is part of targetcli.
Copyright (c) 2011 by RisingTide Systems LLC
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, version 3 (AGPLv3).
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 Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Copyright (c) 2011 by RisingTide Systems LLC.
All rights reserved.
'''
from os import getuid
from targetcli import UIRoot
from rtslib import RTSLibError
from configshell import ConfigShell
class TargetCLI(ConfigShell):
default_prefs = {'color_path': 'magenta',
'color_command': 'cyan',
'color_parameter': 'magenta',
'color_keyword': 'cyan',
'completions_in_columns': True,
'logfile': None,
'loglevel_console': 'info',
'loglevel_file': 'debug9',
'color_mode': True,
'prompt_length': 30,
'tree_max_depth': 0,
'tree_status_mode': True,
'tree_round_nodes': True,
'tree_show_root': True,
'auto_enable_tpgt': True,
'auto_add_mapped_luns': True,
'auto_cd_after_create': True,
}
def main():
'''
Start the targetcli shell.
'''
if getuid() == 0:
is_root = True
else:
is_root = False
shell = TargetCLI('~/.targetcli')
shell.con.epy_write('''
Welcome to the B{targetcli} shell::
Copyright (c) 2011 by RisingTide Systems LLC.\n
For help on commands, type 'help'.
''')
shell.con.display('')
if not is_root:
shell.con.display('You are not root, disabling privileged commands.')
shell.con.display('')
root_node = UIRoot(shell, as_root=is_root)
try:
root_node.refresh()
except RTSLibError, error:
shell.con.display(shell.con.render_text(str(error), 'red'))
else:
shell.run_interactive()
if __name__ == "__main__":
main()
|