Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

[AJUDA] Automação de Comandos

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Python [AJUDA] Automação de Comandos

    Boa tarde, o problema é~

    Tenho que executar 8 comandos por linha de um txt, o txt no caso é uma variavel que usarei no comando~ o que não estou conseguindo é que ao dar o camando, que requer uma senha, fazer a minha aplicação colocar a senha. Eu achei em algum site (não sei informar qual) que fala que se usar um | (pipe) entre os comandos de cmd funcionaria, só que não~

    Ai vai o programa que fiz, se puderem ajudem plx!

    O comando: ldapsearch -h 10.0.0.1 -D"cn=Manager,o=Casa,c=BR" -b"ou=People,ou=Familia,o=Casa,c=BR" "(uid='+y+')" -W -x | grep [varias coisas]

    Senha do BD: BDCasa12#

    Código:
    #!/usr/bin/python
    import os
    
    x = open('/uid.txt', 'r')
    print 'abriu o txt'
    
    for i in range (10):
            y = x.readline()
            print y
            os.system('ldapsearch -h 10.0.0.1 -D"cn=Manager,o=Casa,c=BR" -b"ou=People,ou=Familia,o=Casa,c=BR" "(uid='+y+')" -W -x |grep gecos >> casa.txt' | 'BDCasa12#')
            os.system('ldapsearch -h 10.0.0.1 -D"cn=Manager,o=Casa,c=BR" -b"ou=People,ou=Familia,o=Casa,c=BR" "(uid='+y+')" -W -x |grep uidNumber >> casa.txt' | 'BDCasa12#')
            os.system('ldapsearch -h 10.0.0.1 -D"cn=Manager,o=Casa,c=BR" -b"ou=People,ou=Familia,o=Casa,c=BR" "(uid='+y+')" -W -x |grep gidNumber >> casa.txt' | 'BDCasa12#')
            os.system('ldapsearch -h 10.0.0.1 -D"cn=Manager,o=Casa,c=BR" -b"ou=People,ou=Familia,o=Casa,c=BR" "(uid='+y+')" -W -x |grep mail >> casa.txt' | 'BDCasa12#')
            os.system('ldapsearch -h 10.0.0.1 -D"cn=Manager,o=Casa,c=BR" -b"ou=People,ou=Familia,o=Casa,c=BR" "(uid='+y+')" -W -x |grep loginShell >> casa.txt' | 'BDCasa12#')
            os.system('ldapsearch -h 10.0.0.1 -D"cn=Manager,o=Casa,c=BR" -b"ou=People,ou=Familia,o=Casa,c=BR" "(uid='+y+')" -W -x |grep cn >> casa.txt | 'BDCasa12#')
            os.system('ldapsearch -h 10.0.0.1 -D"cn=Manager,o=Casa,c=BR" -b"ou=People,ou=Familia,o=Casa,c=BR" "(uid='+y+')" -W -x |grep displayname >> casa.txt' | 'BDCasa12#')
            os.system('ldapsearch -h 10.0.0.1 -D"cn=Manager,o=Casa,c=BR" -b"ou=People,ou=Familia,o=Casa,c=BR" "(uid='+y+')" -W -x |grep userPassword >> casa.txt' | 'BDCasa12#')
    
    x.close()
    print 'fechou o txt'
    Me retorna o erro:

    Traceback (most recent call last):
    File "/home/fnd/Área de Trabalho/testearquivoldap.py", line 9, in <module>
    os.system('ldapsearch -h 10.0.0.1 -D"cn=Manager,o=Casa,c=BR" -b"ou=People,ou=Familia,o=Casa,c=BR" "(uid=1)" -W -x |grep gecos >> geco.txt' | 'BDCasa12#')
    TypeError: unsupported operand type(s) for |: 'str' and 'str'
    A questão é que, a aplicação acha que a senha do BD é parte do 1º comando~ Assim não colocando a senha no BD, com isso não retornando nada~
    Alguém ajuda? *.*

    Basicamente quero ajuda de como fazer o python colocar a senha no prompt depois de dar o comando =p

    Uso ubuntu | python 2.7.6 | BD: OpenLdap
    Last edited by MERCE; 15-07-2014, 13:45. Motivo: Adicionar TAG Code and Quote

  • Font Size
    #2
    Já pensou em trocar o -W por um -w DBCasa12# ?

    Mesmo por que você não pode usar um | sem um comando antes e depois do |.

    E de toda forma acho que você não entendeu o funcionamento do |, o resultado do comando 1
    será passado para o comando 2.

    Se fosse usar um | seria assim:

    echo "blablabla" | ldapsearch ...... -W

    []s

    Comment


    • Font Size
      #3
      (Y)

      VLW man o lance do "-w [senha]" deu certo!!!

      Mas ainda ñ intendi o bang do | (pipe)... =p

      Comment


      • Font Size
        #4
        o pipe (|) conecta a saída do comando 1 (stdout) para ser processado pelo comando 2

        tipo: ls -1 | less

        comando 1 = ls -1
        esse cara vai mostrar todos os arquivos no diretório corrente

        o less vai receber isso como entrada de dados e vai fazer "paginação" do ls -1

        Outro exemplo um pouco mais complexo:

        ifconfig -a |egrep "mtu|inet" |grep -v "inet6" |cut -d: -f1

        comando 1 = ifconfig -a
        comando 2 = egrep "mtu|inet"
        comando 3 = grep -v "inet6"
        comando 4 = cut -d: -f1

        o comando 1 me mostra todas as interfaces da maquina e suas respectivas configurações
        o comando 2 filtra essa saída mostrando as linhas que tenham a palavra mtu ou inet
        o comando 3 filtra novamente mostrando apenas o que não tem a palavra inet6
        o comando 4 mostra apenas o que tem antes do 1o : que ele encontrar na linha (se não encontra mostra a linha toda).
        Código:
        # ifconfig -a |egrep "mtu|inet" |grep -v "inet6" |cut -d: -f1
        eth0
                inet 189.121.37.102  netmask 255.255.254.0  broadcast 189.121.37.255
        eth1
                inet 10.19.73.1  netmask 255.255.255.0  broadcast 10.19.73.255
        eth2
                inet 10.16.8.1  netmask 255.255.255.0  broadcast 10.16.8.255
        eth3
                inet 192.168.111.1  netmask 255.255.255.0  broadcast 192.168.111.255
        eth4
                inet 192.168.55.2  netmask 255.255.255.0  broadcast 192.168.55.255
        lo
                inet 127.0.0.1  netmask 255.0.0.0
        virbr0
                inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        virbr0-nic
        #
        No seu caso, você estava passando uma string (que era a senha) como se fosse um comando.

        []s

        Comment

        X
        Working...
        X