51 lines
		
	
	
		
			974 B
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			51 lines
		
	
	
		
			974 B
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								#compdef zoneadm zonecfg zlogin
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								_zones () {
							 | 
						||
| 
								 | 
							
									case "$service" in
							 | 
						||
| 
								 | 
							
										zoneadm)	_zoneadm "$@";;
							 | 
						||
| 
								 | 
							
										zonecfg) _zonecfg "$@";;
							 | 
						||
| 
								 | 
							
										zlogin) _zlogin "$@";;
							 | 
						||
| 
								 | 
							
										*) _message "Unknow service $service";;
							 | 
						||
| 
								 | 
							
									esac
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								_zlogin () {
							 | 
						||
| 
								 | 
							
									local -a zones
							 | 
						||
| 
								 | 
							
									zones=($(zonelist))
							 | 
						||
| 
								 | 
							
									_arguments \
							 | 
						||
| 
								 | 
							
										'-l[username]:username:_users' \
							 | 
						||
| 
								 | 
							
										'-C[console login]' \
							 | 
						||
| 
								 | 
							
										'-S[safe login]' \
							 | 
						||
| 
								 | 
							
										'-E[disable escape sequence character]' \
							 | 
						||
| 
								 | 
							
										'*:zone:($zones)' && return
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								_zoneadm () {
							 | 
						||
| 
								 | 
							
									local -a zones
							 | 
						||
| 
								 | 
							
									zones=($(zonelist))
							 | 
						||
| 
								 | 
							
									_arguments \
							 | 
						||
| 
								 | 
							
										'-z[zone]:zone:($zones)' \
							 | 
						||
| 
								 | 
							
										'*:command:(boot halt install list ready uninstall verify reboot)' && return
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								_zonecfg () {
							 | 
						||
| 
								 | 
							
									local -a zones
							 | 
						||
| 
								 | 
							
									zones=($(zonelist))
							 | 
						||
| 
								 | 
							
									_arguments \
							 | 
						||
| 
								 | 
							
										'-z[zone]:zone:($zones)' \
							 | 
						||
| 
								 | 
							
										'-f[command file]:file:_files' && return
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								zonelist () {
							 | 
						||
| 
								 | 
							
									local -a zones
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									# Fetch zone lists from /etc/zones/index
							 | 
						||
| 
								 | 
							
									zones=(${${(a)"${(f)$(< /etc/zones/index)}"##\#*}//:*}) #" prevent vim become crazy
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									# Remove global zone from list "
							 | 
						||
| 
								 | 
							
									zones[(r)global]=''
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									echo -n $zones
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								return 1
							 |