Exemplo n.º 1
0
def main():
    # loggerフォーマットメソッド
    logger = vm_module.logger_format()
    # parserメソッド
    args = vm_module.set_args()
    # 接続メソッド
    si = vm_module.si_connect(args.host, args.username, args.password)

    vm_list = si.content.viewManager.CreateContainerView(
        si.content.rootFolder, [vim.VirtualMachine], True)
    # csvファイル出力のヘッダーリストと空のセット
    header = [('VMNAME', 'ESXi')]
    rows = set()
    #rows =[]

    # csvファイルへの出力
    csv_file = open('./python.csv', 'w', newline='')
    writer = csv.writer(csv_file)
    writer.writerows(header)
    for vm in vm_list.view:
        for device in vm.config.hardware.device:
            # デバイスの判定
            class_name = vim.vm.device.VirtualVmxnet3
            if isinstance(
                    device,
                    class_name) and device.connectable.connected == False:
                rows.add((vm.name, vm.runtime.host.name))
                #if (vm.name, vm.runtime.host.name) not in rows:
                #rows.append((vm.name, vm.runtime.host.name))
    # 書き込み
    writer.writerows(rows)
Exemplo n.º 2
0
def main():
    # loggerフォーマットメソッド
    logger = vm_module.logger_format()
    # parserメソッド
    args = vm_module.set_args()
    # 接続メソッド
    si = vm_module.si_connect(args.host, args.username, args.password)

    vm_list = si.content.viewManager.CreateContainerView(
        si.content.rootFolder, [vim.VirtualMachine], True)
    for vm in vm_list.view:
        name = vm.name
        pattern = re.search('^centos-\d+-g1$', name)
        if pattern:
            logger.info(vm.name)
Exemplo n.º 3
0
def main():
	# loggerフォーマットメソッド
	logger = vm_module.logger_format()
	# parserメソッド
	args = vm_module.set_args_paramiko()
	#接続メソッド
	si = vm_module.si_connect(args.host, args.username, args.password)
	#CreateContainerViewメソッド	
	vm_list = vm_module.CreateContainerView(si, vim.VirtualMachine)
	
	USER = args.ssh_username
	PSWD = args.ssh_password

	vm_name = 'centos-1-g2'

	logger.info('開始します')
	logger.info('--------------------------------')

	# 転送先のVM電源ON、IPアドレス取得
	for vm in vm_list.view:

		if vm.name == vm_name:
			ip_result = get_ip(vm, logger)
			if ip_result == True:
				logger.info('転送先の%sのIPアドレスの取得成功' % vm.name)
				logger.info('')
			else:
				logger.info('転送先の%sのIPアドレスの取得失敗' % vm.name)
				logger.info('')
				logger.info('転送することができないため、終了します')
				sys.exit()
	
	# 転送元のVM電源ON、IPアドレス取得
	for vm in vm_list.view:
		if vm.name == 'ESXi':
			ip_result = get_ip(vm, logger)
			if ip_result == True:
				logger.info('%sのIPアドレスの取得成功' % vm.name)
				logger.info('')
			else:
				logger.info('%sのIPアドレスの取得失敗' % vm.name)
				logger.info('')
				logger.info('%sへのSSH接続処理が実行不可のため終了します' % vm.name)
				sys.exit()

			HOST = vm.summary.guest.ipAddress

			ssh = dossh(USER, PSWD, HOST, logger)
Exemplo n.º 4
0
def main():
	# loggerフォーマットメソッド
	logger = vm_module.logger_format()
	# parserメソッド
	args = vm_module.set_args_paramiko()
	# 接続メソッド
	si = vm_module.si_connect(args.host ,args.username ,args.password)
	# CreateContainerViewメソッド 
	vm_list = vm_module.CreateContainerView(si, vim.VirtualMachine)

	USER = args.ssh_username
	PSWD = args.ssh_password
	command = args.command

	logger.info('開始します')
	logger.info('-------------------------------------------')
	for vm in vm_list.view:
		# IP取得メソッド
		ip_result = get_ip(vm,logger)
		# IP取得の結果判定
		if ip_result is True:
			logger.info('%sのIPアドレスの取得成功' % vm.name)
			logger.info('')
		else:
			logger.info('%sのIPアドレスの取得失敗' % vm.name)
			logger.info('')
			logger.info('%sへのSSH接続をスキップします' % vm.name)
			logger.info('-------------------------------------------')
			continue
		
		# 値を代入
		HOST = vm.summary.guest.ipAddress
		
		# SSH接続メソッド
		ssh  = connect_ssh(HOST,USER,PSWD,logger,vm)
		# 接続結果がFalseの場合passして終了
		if ssh is False:
			pass
		else:
			result = check_command(ssh,command,logger,vm)
Exemplo n.º 5
0
def main():

    # loggerフォーマットメソッド
    logger = vm_module.logger_format()
    # parserメソッド
    args = vm_module.set_args_paramiko()
    #接続メソッド
    si = vm_module.si_connect(args.host, args.username, args.password)
    #CreateContainerViewメソッド
    vm_list = vm_module.CreateContainerView(si, vim.VirtualMachine)

    USER = args.ssh_username
    PSWD = args.ssh_password
    command = args.command
    PROMPT = '[root@localhost:~] '
    password = '******'

    logger.info('開始します')
    logger.info('--------------------------------')
    for vm in vm_list.view:
        if vm.name == 'ESXi':
            ip_result = get_ip(vm, logger)
            if ip_result == True:
                logger.info('%sのIPアドレスの取得成功' % vm.name)
                logger.info('')
            else:
                logger.info('%sのIPアドレスの取得に失敗' % vm.name)
                logger.info('')
                logger.info('%sへのSSH接続処理をスキップします' % vm.name)
                logger.info('--------------------------------')
                continue

            HOST = vm.summary.guest.ipAddress

            ssh = connect_ssh(HOST, USER, PSWD, logger, vm)
            if ssh == False:
                pass
            else:
                result = check_command(ssh, command, logger, vm, PROMPT,
                                       password)
Exemplo n.º 6
0
def main():
    # loggerフォーマットメソッド
    logger = vm_module.logger_format()
    # parserメソッド
    args = vm_module.set_args_paramiko()
    # 接続メソッド
    si = vm_module.si_connect(args.host, args.username, args.password)
    #CreateContainerViewメソッド
    vm_list = vm_module.CreateContainerView(si, vim.VirtualMachine)

    USER = args.ssh_username
    PSWD = args.ssh_password

    vm_name = 'centos-1-g2'
    ESXi_name = 'ESXi'

    logger.info('開始します')
    logger.info('--------------------------------')

    # 転送先のVM電源ON、IPアドレス取得
    for vm in vm_list.view:

        if vm.name == vm_name:
            ip_result = get_ip(vm, logger)
            if ip_result == True:
                logger.info('転送先の%sのIPアドレスの取得成功' % vm.name)
                logger.info('')
            else:
                logger.info('転送先の%sのIPアドレスの取得失敗' % vm.name)
                logger.info('')
                logger.info('転送することができないため、終了します')
                sys.exit()

    # 転送元のVM電源ON、IPアドレス取得
    for vm in vm_list.view:
        if vm.name == ESXi_name:
            ip_result = get_ip(vm, logger)
            if ip_result == True:
                logger.info('%sのIPアドレスの取得成功' % vm.name)
                logger.info('')
            else:
                logger.info('%sのIPアドレスの取得失敗' % vm.name)
                logger.info('')
                logger.info('%sへのSSH接続処理が実行不可のため終了します' % vm.name)
                sys.exit()

            HOST = vm.summary.guest.ipAddress

            try:
                ssh = connect_ssh(HOST, USER, PSWD)

            except pxssh.ExceptionPxssh as e:
                print('ssh接続できませんでした。終了します。')
                print(str(e))
                sys.exit()

            logger.info('ssh接続を開始します')
            logger.info('')

            command = 'touch cpuinfo.txt'
            ssh_execution(ssh, command, logger)

            command = 'cat /proc/cpuinfo'
            ssh_execution(ssh, command, logger)

            command = 'cat /proc/cpuinfo  > cpuinfo.txt'
            ssh_execution(ssh, command, logger)

            command = 'scp cpuinfo.txt [email protected]:/home/tokunaga'
            ssh_execution(ssh, command, logger)

            a = '[email protected]\'s password:'******'Are you sure you want to continue connecting (yes/no)?'
            input_message = ssh.before.decode('utf-8')

            if re.search(a, input_message):
                command = 'Toku1456'
                ssh_execution(ssh, command, logger)
            elif re.search(b, input_message):
                command = 'yes'
                ssh_execution(ssh, command, logger)
                command = 'Toku1456'
                ssh_execution(ssh, command, logger)

            logger.info('--------------------------------')
            ssh.logout()
Exemplo n.º 7
0
def main():
    # loggerフォーマットメソッド
    logger = vm_module.logger_format()
    # parserメソッド
    args = vm_module.set_args_paramiko()
    #接続メソッド
    si = vm_module.si_connect(args.host, args.username, args.password)
    #CreateContainerViewメソッド
    vm_list = vm_module.CreateContainerView(si, vim.VirtualMachine)

    USER = args.ssh_username
    PSWD = args.ssh_password

    centos_name = 'centos-1-g2'
    ESXi_name = 'ESXi'

    logger.info('開始します')
    logger.info('--------------------------------')

    # 転送先のVM電源ON、IPアドレス取得
    centos = [vm for vm in vm_list.view if vm.name == centos_name]
    if centos:
        centos_vm = centos[0]
    else:
        logger.error('対象のCentosが見つかりませんでした')
        sys.exit(1)
    ip_result = get_ip(centos_vm, logger)
    if ip_result == True:
        logger.info('転送先の%sのIPアドレスの取得成功' % centos_vm.name)
        logger.info('')
    else:
        logger.error('転送先の%sのIPアドレスの取得失敗' % centos_vm.name)
        logger.info('')
        logger.error('転送することができないため、終了します')
        sys.exit(1)

    # 転送元のVM電源ON、IPアドレス取得
    esxi = [vm for vm in vm_list.view if vm.name == ESXi_name]
    if esxi:
        esxi_vm = esxi[0]
    else:
        logger.error("対象のESXiが見つかりませんでした")
        sys.exit(1)
    ip_result = get_ip(esxi_vm, logger)
    if ip_result == True:
        logger.info('%sのIPアドレスの取得成功' % esxi_vm.name)
        logger.info('')
    else:
        logger.error('%sのIPアドレスの取得失敗' % esxi_vm.name)
        logger.info('')
        logger.error('%sへのSSH接続処理が実行不可のため終了します' % esxi_vm.name)
        sys.exit(1)

    HOST = esxi_vm.summary.guest.ipAddress

    try:
        ssh = connect_ssh(HOST, USER, PSWD)

    except pxssh.ExceptionPxssh as e:
        logger.error('ssh接続できませんでした。終了します。')
        logger.error(str(e))
        sys.exit(1)

    logger.info('ssh接続を開始します')
    logger.info('')
    command = 'touch cpuinfo.txt'
    ssh_execution(ssh, command, logger)

    command = 'cat /proc/cpuinfo'
    ssh_execution(ssh, command, logger)

    command = 'cat /proc/cpuinfo  > cpuinfo.txt'
    ssh_execution(ssh, command, logger)

    command = 'scp cpuinfo.txt [email protected]:/home/tokunaga'
    ssh_execution(ssh, command, logger)

    input_message = ssh.before.decode('utf-8')

    #    message_list = ['[email protected]\'s password:'******'Are you sure you want to continue connecting (yes/no)?']
    #
    #   if re.search(message_list[0], input_message):
    #        command = 'Toku1456'
    #        ssh_execution(ssh, command, logger)
    #    elif re.search(message_list[1], input_message):
    #        command = 'yes'
    #        ssh_execution(ssh, command, logger)
    #        command = 'Toku1456'
    #        ssh_execution(ssh, command, logger)

    message = 'Are you sure you want to continue connecting (yes/no)?'
    if re.search(message, input_message):
        command = 'yes'
        ssh_execution(ssh, command, logger)

    command = 'Toku1456'
    ssh_execution(ssh, command, logger)

    logger.info('--------------------------------')
    logger.info('出力結果')
    logger.info(ssh.before.decode('utf-8'))
    logger.info('--------------------------------')
    ssh.logout()