M@KO Posted April 29, 2008 at 01:11 AM Report Share #182237 Posted April 29, 2008 at 01:11 AM Um programa que faz o upgrade, update, search e install com o sudo aptitude: #COMSUDO #coded by Mako #Abril de 2008 import os import sys def limpar(): os.system("clear") def sair(): limpar() print "Ate a proxima..." sys.exit() def opcao_errada(): print "Opcao inexistente" def update(): os.system("sudo aptitude update") def upgrade(): os.system("sudo aptitude upgrade") def procura(): chave = raw_input("Digite o que pretende procurar: ") comando = "sudo aptitude search " + chave os.system(comando) def instala(): chave = raw_input("Digite o que pretende instalar: ") comando = "sudo aptitude install " + chave os.system(comando) def main(): limpar() while true: print "" print "O que pretende fazer?" print "1 --> Update do sistema" print "2 --> Upgrade do sistema" print "3 --> Procurar" print "4 --> Instalar" print "0 --> Sair" opcao = raw_input() if opcao == "1": update() elif opcao == "2": upgrade() elif opcao == "3": procura() elif opcao == "4": instala() elif opcao == "0": sair() else: opcao_errada() main() cool stuff http://blog.zxcoders.com/ Link to comment Share on other sites More sharing options...
Tharis Posted April 29, 2008 at 02:25 AM Report Share #182239 Posted April 29, 2008 at 02:25 AM 3 coisas: -> 1º Usa o GeShi: mete o código entre as tags [code"=Python"] [/"code"] (sem aspas) -> No loop while não precisas do "fim=0 e fim==0" podes pôr "while True:" -> E para a password? Como é? Link to comment Share on other sites More sharing options...
M@KO Posted April 29, 2008 at 05:41 AM Author Report Share #182241 Posted April 29, 2008 at 05:41 AM Obrigado pelas dicas. Ja editei o post, ja usei o geshi e alterei o ciclo para while true. nao sabia esta do true por isso tive de me desenrascar 😉 Quanto a pass... era pra por aquilo a pedir a pass mas ao executar o prog o proprio pc faz isso, por isso achei desnecessario ? 👍 cool stuff http://blog.zxcoders.com/ Link to comment Share on other sites More sharing options...
JoaoRodrigues Posted April 29, 2008 at 02:31 PM Report Share #182307 Posted April 29, 2008 at 02:31 PM Estás a usar as funções como um "armazém". Porque não experimentas uma classe? 👍 Ou então as funções de uma só linha, tipo a tua update, pões directamente no código principal da main. Link to comment Share on other sites More sharing options...
M@KO Posted April 29, 2008 at 03:57 PM Author Report Share #182343 Posted April 29, 2008 at 03:57 PM Sou novato nisto do python... nao sei fazer classes por enquanto:) Ou então as funções de uma só linha, tipo a tua update, pões directamente no código principal da main. Tas a dizer pra fazer assim: os.system("sudo aptitude search " + chave) cool stuff http://blog.zxcoders.com/ Link to comment Share on other sites More sharing options...
newbeen Posted April 29, 2008 at 07:19 PM Report Share #182400 Posted April 29, 2008 at 07:19 PM Versão reduzida com exactamente as mesmas funções só para ajudar 😁 import os def executa(x): try: os.system(x) except: print "Alguma coisa correu mal, tem aptitude?" os.system("clear") while True: print """ O que pretende fazer? 1 --> Update do sistema 2 --> Upgrade do sistema 3 --> Procurar 4 --> Instalar 0 --> Sair""" opcao = raw_input() if opcao == "1": executa("sudo aptitude update") elif opcao == "2": executa("sudo aptitude upgrade") elif opcao == "3" or opcao == "4" : nome="search" display="pesquisar" if opcao=="4": nome="install" display="instalar" chave = raw_input("Digite o que pretende %s: " %display) comando = "sudo aptitude %s %s " %(nome, chave) executa(comando) elif opcao == "0": executa("clear") print "Ate a proxima..." quit() else: print "Opcao inexistente" RHCE - 120-062-534 Link to comment Share on other sites More sharing options...
David Pintassilgo Posted April 29, 2008 at 07:37 PM Report Share #182401 Posted April 29, 2008 at 07:37 PM AAAAA... afinal tb já lá andas a mexer... 😄 👍😉😄 olha uma cena fixe: http://www.portugal-a-programar.pt/index.php?showtopic=11933 import sys a = sys.argv[1] print a Está lá nos nossos apontamentos 😄 cool stuffs to check. http://blog.zxcoders.com// Link to comment Share on other sites More sharing options...
M@KO Posted April 30, 2008 at 09:03 PM Author Report Share #182724 Posted April 30, 2008 at 09:03 PM ta fixe newbeen. achei foi esta parte um bocado confusa elif opcao == "3" or opcao == "4" : nome="search" display="pesquisar" if opcao=="4": nome="install" display="instalar" chave = raw_input("Digite o que pretende %s: " %display) comando = "sudo aptitude %s %s " %(nome, chave) executa(comando) ]E ja agora ... Estás a usar as funções como um "armazém". Porque não experimentas uma classe? 😛 Ou então as funções de uma só linha, tipo a tua update, pões directamente no código principal da main. ... da me ai um exemplo de uma class pra eu aprender a fazer isso. 😉 cool stuff http://blog.zxcoders.com/ Link to comment Share on other sites More sharing options...
rolando2424 Posted April 30, 2008 at 10:20 PM Report Share #182739 Posted April 30, 2008 at 10:20 PM Para reproduzir fielmente o efeito que tu tens, podes usar algo assim import os import sys class Apt: def limpar(self): os.system("clear") def sair(self): self.limpar() print "Ate a proxima" sys.exit() def opcao_errada(self): print "Opcao inexistente" def update(self): os.system("sudo aptitude update") def upgrade(self): os.system("sudo aptitude upgrade") def procura(self): chave = raw_input("Digite o que pretende procurar: ") comando = "sudo aptitude search" + chave os.system(comando) def instalar(self): chave = raw_input("Digite o que pretende instalar: ") comando = "sudo aptitude install " + chave os.system(comando) Depois podias usar algo do género: apt_client = Apt() apt_client.update() apt_client.upgrade() etc. Por acaso tenho aqui uma versão que fiz que tem umas coisas um pouco mais diferentes (tracebacks e o caraças), por isso não vou fazer spoilers 😉 (É praticamente igual ao teu programa nas coisas que faz). Não me responsabilizo por qualquer dano ocorrido no seguimento dos meus conselhos. Prontos, a minha pessoa está oficialmente protegida legalmente 😄 Link to comment Share on other sites More sharing options...
M@KO Posted April 30, 2008 at 11:14 PM Author Report Share #182746 Posted April 30, 2008 at 11:14 PM Epa, tao mas se nao te importares poe aqui essa tua versao pra eu tb aprender a fazer tracebacks e o caracas 😉 cool stuff http://blog.zxcoders.com/ Link to comment Share on other sites More sharing options...
rolando2424 Posted April 30, 2008 at 11:51 PM Report Share #182755 Posted April 30, 2008 at 11:51 PM import os import warnings import subprocess class Apt: def __init__(self): if os.environ["LOGNAME"] != "root": warnings.warn("User is not root") self.is_root = 0 else: self.is_root = 1 def _run_command(self, command): # Internal Command "Runs a command with subprocess.call module" try: subprocess.call(command, shell=True) except OSError: print "File or program not found." except: import traceback print "Bad Voodoo happened." print "Dumping information on screen." print "----------------------------------------------" traceback.print_exc() print "----------------------------------------------" if raw_input("Executar PDB? ").lower() in ("sim", "s", "yes", "y"): import pdb pdb.set_trace() def search(self, package): "Search for the package's name with apt-cache search" print "apt-cache search %s" % package self._run_command("apt-cache search %s" % package) def install(self, package): "Install the package with apt-get" if self.is_root: self._run_command("apt-get install %s" % package) else: self._run_command("sudo apt-get install %s" % package) def update(self): "Runs apt-get update" if self.is_root: self._run_command("apt-get update") else: self._run_command("sudo apt-get update") def upgrade(self, dist_upgrade=0): "Runs apt-get upgrade. If dist_upgrade is 1, then use apt-get dist-upgrade" if self.is_root: if dist_upgrade: self._run_command("apt-get dist-upgrade") else: self._run_command("apt-get upgrade") else: if dist_upgrade: self._run_command("sudo apt-get dist-upgrade") else: self._run_command("sudo apt-get upgrade") def main(): apt_client = Apt() done = 0 while not done: print """ 1) Search 2) Install 3) Update 4) Upgrade 5) Dist-Upgrade 6) Quit """ choice = raw_input(">> ") if choice == "1": apt_client.search(raw_input("Name: ")) elif choice == "2": apt_client.install(raw_input("Name: ")) elif choice == "3": apt_client.update() elif choice == "4": apt_client.upgrade() elif choice == "5": apt_client.upgrade(dist_upgrade=1) elif choice == "6": done = 1 else: print "Unknown Option!" main() Tal como disse, é praticamente igual ao teu, excepto no facto de verificar se o utilizador está como root ou não (porque o sudo não funciona em todas as debian-based distros), na opção de usar o dist-upgrade em vez de upgrade, usar o subprocess.call em vez de os.system e o apt-get/install em vez do aptitude. O menu foi feito assim à pressa, porque quando fiz isto não cheguei a fazer um menu para ele 😉 Não me responsabilizo por qualquer dano ocorrido no seguimento dos meus conselhos. Prontos, a minha pessoa está oficialmente protegida legalmente 😄 Link to comment Share on other sites More sharing options...
newbeen Posted May 1, 2008 at 08:38 PM Report Share #182902 Posted May 1, 2008 at 08:38 PM ta fixe newbeen. achei foi esta parte um bocado confusa] Qual é a tua duvida nesse pedaço de código? RHCE - 120-062-534 Link to comment Share on other sites More sharing options...
M@KO Posted May 2, 2008 at 11:30 PM Author Report Share #183130 Posted May 2, 2008 at 11:30 PM Newbeen Eu percebi tudo, so que a primeira vista vi um if = 4 dentro de um elif =3 ou 4 e fiquei um bocado admirado. Mas ja vi que isso evita que escrevas 2 vezes as outras 3 linhas de codigo. e depois ainda nao sabias que se podia usar o "&" em vez do "+" ta fixe cool stuff http://blog.zxcoders.com/ Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now