Changeset 3524 for lliurex-detect


Ignore:
Timestamp:
Feb 3, 2017, 1:54:52 PM (3 years ago)
Author:
mabarracus
Message:

Improved lliurex-detect with lliurex-version compatibility
Eval & Exec modes to work with bash

Location:
lliurex-detect/trunk/fuentes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • lliurex-detect/trunk/fuentes/debian/changelog

    r3122 r3524  
     1lliurex-detect (0.2) xenial; urgency=medium
     2
     3  * Improved lliurex-detect with lliurex-version compatibility
     4  * Eval & Exec modes to work with bash
     5
     6 -- M.Angel Juan <m.angel.juan@gmail.com>  Fri, 03 Feb 2017 13:53:32 +0100
     7
    18lliurex-detect (0.1) xenial; urgency=medium
    29
  • lliurex-detect/trunk/fuentes/lliurex-detect.install/usr/bin/lliurex-detect

    r3517 r3524  
    5454def detect_type():
    5555#
    56 #   Possible output values: thin,semi,fat,unknown
    57 #
    58 #
     56#   Possible output values: live,thin,semi,fat,unknown
     57#
     58#
     59
    5960    display=os.environ.get('DISPLAY')
    6061    #On thin clients display is ip+display so it's at least 7 chars
     
    8788        else:
    8889            client_type='fat'
     90    try:
     91        detect_live()
     92        client_type=client_type+',live'
     93    except:
     94        pass
     95
    8996    return client_type.rstrip()
    9097#def detect_type
     
    116123#def detect_user():
    117124
     125def store_result(results='',namevar='',action='store'):
     126    global eval_mode
     127    global result
     128    global exit_return_code_mode
     129
     130    if action == 'init':
     131        if eval_mode:
     132            result={}
     133            return 0
     134        else:
     135            result=[]
     136            return 0
     137    elif action == 'store':
     138        if results=='':
     139            raise Exception('Missing param results to store')
     140        if eval_mode and namevar=='':
     141            raise Exception('Eval mode need namevar param')
     142
     143        if eval_mode:
     144            if namevar=='USERTYPE':
     145                res=results
     146                if res[0] == '*':
     147                    result['PROMOTED_USER']='yes'
     148                    res=results[1:]
     149                else:
     150                    result['PROMOTED_USER']='no'
     151                result['USERNAME']=res.split('(')[0]
     152                result['LOGIN_TYPE']=res.split('(')[1].split(')')[0]
     153            elif namevar=='SESSION_TYPE':
     154                res=results.split(',')
     155                result['LIVE']='no'
     156                result['LTSP']='no'
     157                result['THIN']='no'
     158                result['SEMI']='no'
     159                result['FAT']='no'
     160
     161                if len(res) > 1:
     162                    result['LIVE']='yes'
     163                if res[0] != 'fat':
     164                    result['LTSP']='yes'
     165
     166                result[res[0].upper()]='yes'
     167            elif namevar=='FLAVOUR':
     168                result['SERVER']='no'
     169                result['DESKTOP']='no'
     170                result['CLIENT']='no'
     171                result['INFANTIL']='no'
     172                result['MUSIC']='no'
     173                result['PIME']='no'
     174
     175                result[results.upper()]='yes'
     176            else:
     177                result[namevar]=results
     178               
     179        else:
     180            result.append(results)
     181    elif action == 'print':
     182        if exit_return_code_mode != False:
     183            if result[exit_return_code_mode.upper()]=='yes':
     184                exit(0)
     185            else:
     186                exit(1)
     187        if len(result) > 0:
     188            if eval_mode:
     189                for k,v in result.items():
     190                    print(k+'='+v)
     191            else:
     192                print (','.join(result))
     193    else:
     194        raise Exception('Unknow action')
     195
     196
     197#def store_result():
     198
     199
     200#
     201# MAIN PROGRAM
     202#
     203
    118204parser = argparse.ArgumentParser(description='Get information about running environment')
    119205parser.add_argument('-a','--all',metavar='',action='store_const',help='Get all information',const=True)
     206parser.add_argument('-e','--eval',metavar='',action='store_const',help='Show all information to evaluate in bash variables',const=True)
    120207parser.add_argument('-s','--session',metavar='',action='store_const',help='Get current session type',const=True)
    121208parser.add_argument('-f','--flavour',metavar='',action='store_const',help='Get the flavour of current system',const=True)
    122209parser.add_argument('-u','--usertype',metavar='username',nargs='?',const='',help='Get the usertype from current user or from passed username')
    123 parser.add_argument('-lt','--ltsp',metavar='',action='store_const',help='Get if it\'s running on ltsp system',const=True)
    124 parser.add_argument('-lv','--live',metavar='',action='store_const',help='Get if it\'s running on live system',const=True)
     210code_types=['live','ltsp','fat','semi','thin','desktop','server','client','infantil','pime','music']
     211parser.add_argument('-x','--with-return-code',metavar='[live|ltsp|fat|semi|thin|desktop|server|client|infantil|pime|music]',nargs=1,choices=code_types,help='Execute mode testing value passed')
    125212# lliurex-version options
    126213parser.add_argument('-n','--number',metavar='',action='store_const',const=True,help='Get the cdd number version')
     
    129216parser.add_argument('--history',metavar='',action='store_const',const=True,help='Get the installed meta\'s history')
    130217args=parser.parse_args()
     218
     219#print(args)
    131220
    132221args_all=args.all
     
    144233            arg_none_for_lliurex_version=False
    145234            break
    146 
    147 result=[]
     235else:
     236    arg_none_for_lliurex_version=False
     237
     238eval_mode=args.eval
     239
     240exit_return_code_mode=False
     241if args.with_return_code != None:
     242    eval_mode=True
     243    args_all=True
     244    exit_return_code_mode=args.with_return_code[0]
     245   
     246
     247store_result(action='init')
     248
    148249try:
    149250    if args_all or args.session != None:
    150         result.append(detect_type())
     251        store_result(detect_type(),'SESSION_TYPE')
    151252    if args_all or args.flavour != None:
    152         result.append(detect_flavour()[-1])
     253        store_result(detect_flavour()[-1],'FLAVOUR')
    153254    if args_all or args.usertype != None:
    154         result.append(detect_user(args.usertype))
    155     if args.ltsp != None:
    156         if 'fat' == detect_type():
    157             exit(0)
    158         else:
    159             exit(1)
    160         result.append()
    161     if args.live != None:
    162         try:
    163             detect_live()
    164             print('yes')
    165             exit(0)
    166         except:
    167             print('no')
    168             exit(1)
     255        store_result(detect_user(args.usertype),'USERTYPE')
     256
    169257#lliurex version options
    170     if args_all or args.number != None:
     258    if args.number != None:
    171259        print(detect_num_cdd())
    172     if args_all or args.version != None:
     260    if args.version != None:
    173261        print(', '.join(detect_flavour()))
    174262    if arg_none_for_lliurex_version:
     
    182270        except:
    183271            exit(1)
    184     if args_all or args.history != None:
     272    if args.history != None:
    185273        print(get_history_version().rstrip())
    186274#end lliurex-version options
    187275
    188     if len(result) > 0:
    189         print (','.join(result))
    190 
     276    store_result(action='print')
    191277except Exception as e:
    192     print('Error '+e)
     278    print('Error '+str(e))
    193279    exit(1)
    194280
Note: See TracChangeset for help on using the changeset viewer.