Arch Linux

 

Scripts: chmodall

De Wiki do Arch Linux Brasil

 
 #! /usr/bin/python
 # coding: utf-8
 
 #### Altera as permissões de arquivos *e* diretórios (com valores diferentes para cada um) recursivamente.
 
 ##	Autor:	Armando M. Baratti
 ##	E-mail: ambaratti  ponto  listas  arroba  gmail  ponto  com
 ## 	Última alteração:	2008-01-19
 ## 	Depende de:
 ##		python
 
 
 import os, sys
 
 ERRO_MOD_RANGE = -1
 ERRO_MOD_INV = -2
 
 def GetMod(Msg):
 	''' Máscara para entrada de modos (permissões).
 	'''
 	ModStr = raw_input('%s: ' % Msg)
 	try:
 		Mod = int(ModStr, 8)
 		if (Mod >= 0000) and (Mod <= 0777):
 			return Mod
 		else:
 			# Faixa incorreta do modo
 			return ERRO_MOD_RANGE
 	except ValueError:
 		# Valor inválido (ex. alfanumérico) do modo.
 		return ERRO_MOD_INV
 
 if __name__ == '__main__':
 	if (len(sys.argv) > 1) and (os.path.isdir(sys.argv[1])):
 		DirBase = sys.argv[1]
 		while True:
 			ArqMod = GetMod('Direito de arquivos')
 			if ArqMod == ERRO_MOD_RANGE:
 				print '\t\tFora da faixa (000 - 777).'
 			elif ArqMod == ERRO_MOD_INV:
 				print '\t\tValor octal inválido.'
 			else:
 				break
 		while True:
 			DirMod = GetMod('Direito de diretórios')
 			if DirMod == ERRO_MOD_RANGE:
 				print '\t\tFora da faixa (000 - 777).'
 			elif DirMod == ERRO_MOD_INV:
 				print '\t\tValor octal inválido.'
 			else:
 				break
 		for DirAtu, Dirs, Arqs in os.walk(DirBase):
 			try:
 				for Arq in Arqs:
 					Arquivo = os.path.join(DirAtu, Arq)
 					os.chmod(Arquivo, ArqMod)
 			except:
 				print 'Erro arquivo: %s' % ArqAtu
 			try:
 				for Dir in Dirs:
 					Diretorio = os.path.join(DirAtu, Dir)
 					os.chmod(Diretorio, DirMod)
 			except:
 				print 'Erro diretório: %s' % Diretorio
 		print 'Finalizado.'
 	else:
 		print 'Uso: %s <nome_dir>' % sys.argv[0]
  
 
 ## 	Sugestões:
 ##		autor:
 ##		data:
 ##		conteúdo:
 

Ferramentas pessoais
TOOLBOX
LANGUAGES