Script para ler todos os arquivos

1. Script para ler todos os arquivos

Rodrigo
rodrigovilhena

(usa Outra)

Enviado em 02/05/2016 - 17:56h

Boa noite, eu sou dono de um servidor de gta online.

as contas dos jogadores ficam dentro de uma pasta, cada jogador possui um arquivo neste formato: Nome.ini

eu preciso de um script que leia todos os arquivos .ini desta pasta e se o jogador possuir a linha pConnectTime abaixo de entre 0 e 1, automaticamente irá deletar.

Obs: Tem que existir esta linha pConnectTime, pois existem outros scripts em arquivos .ini na mesma pasta.

Podem me ajudar? Obrigado !


  


2. Re: Script para ler todos os arquivos

Ronaldo Ferreira de Lima
textmode

(usa Slackware)

Enviado em 02/05/2016 - 18:38h

É algo bem simples de fazer. Use o find + grep ou apenas grep com a opção -R.


3. Re: Script para ler todos os arquivos

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 02/05/2016 - 19:13h

rodrigovilhena escreveu:

Boa noite, eu sou dono de um servidor de gta online.
as contas dos jogadores ficam dentro de uma pasta, cada jogador possui um arquivo neste formato: Nome.ini
eu preciso de um script que leia todos os arquivos .ini desta pasta e se o jogador possuir a linha pConnectTime abaixo de entre 0 e 1, automaticamente irá deletar.
Obs: Tem que existir esta linha pConnectTime, pois existem outros arquivos .ini na mesma pasta.
Podem me ajudar?
Obrigado !


Boa noite rodrigovilhena.
Qual a dificuldade?

Att.:
Marcelo Oliver


4. Re: Script para ler todos os arquivos

Rodrigo
rodrigovilhena

(usa Outra)

Enviado em 02/05/2016 - 19:38h


Então amigo, eu não entendo muito do linux, eu uso a plataforma para hospedar o meu servidor e sei apenas os comandos básicos para rodar o servidor, etc.

Não faço idéia de como criar esse script que citei no tópico

msoliver escreveu:

rodrigovilhena escreveu:

Boa noite, eu sou dono de um servidor de gta online.
as contas dos jogadores ficam dentro de uma pasta, cada jogador possui um arquivo neste formato: Nome.ini
eu preciso de um script que leia todos os arquivos .ini desta pasta e se o jogador possuir a linha pConnectTime abaixo de entre 0 e 1, automaticamente irá deletar.
Obs: Tem que existir esta linha pConnectTime, pois existem outros arquivos .ini na mesma pasta.
Podem me ajudar?
Obrigado !


Boa noite rodrigovilhena.
Qual a dificuldade?

Att.:
Marcelo Oliver





5. Re: Script para ler todos os arquivos

Ronaldo Ferreira de Lima
textmode

(usa Slackware)

Enviado em 02/05/2016 - 21:00h

Tente primeiro encontrar os arquivos com o find. Exemplo:


find /diretorio_dos_jogadores/ -type f -name '*.ini'


Daí você pega um arquivo da saída e passa como argumento para o grep:


grep pConnectTime arquivo_encontrado_pelo_find.ini


Aquela parte do
abaixo de entre 0 e 1
não faço a menor ideia do se trata.

Se for realizar a tarefa uma única vez não precisa de script. Apenas os comandos digitados no terminal resolvem, mas primeiro teste os comandos que passei e tenha certeza que pelo esta parte funciona. Depois discutimos como prosseguir.



6. Re: Script para ler todos os arquivos

Rodrigo
rodrigovilhena

(usa Outra)

Enviado em 02/05/2016 - 21:21h

textmode escreveu:

Tente primeiro encontrar os arquivos com o find. Exemplo:


find /diretorio_dos_jogadores/ -type f -name '*.ini'


Daí você pega um arquivo da saída e passa como argumento para o grep:


grep pConnectTime arquivo_encontrado_pelo_find.ini


Aquela parte do
abaixo de entre 0 e 1
não faço a menor ideia do se trata.

Se for realizar a tarefa uma única vez não precisa de script. Apenas os comandos digitados no terminal resolvem, mas primeiro teste os comandos que passei e tenha certeza que pelo esta parte funciona. Depois discutimos como prosseguir.


Vou tentar te explicar melhor o que eu desejo fazer..

eu já estou no diretório que contém todas as contas dos jogadores.

meu servidor de gta online, é o maior do Brasil, portanto, existem mais de 1 milhão de contas.

como tem muitas contas, acaba pesando todo o sistema e eu gostaria de eliminar todos os jogadores que entraram, jogaram pouco tempo e não jogam mais, que estão apenas acumulando arquivos sem uso.

o pConnectTime é o que identifica dentro do jogo quantas horas jogadas ele tem, essa variável é criada automaticamente quando o jogador cria a conta, portanto, vai iniciar como 0, eu gostaria de deletar todos os arquivos .ini que contenham o pConnectTime e que sejam abaixo de 1, ou seja, a conta existe, porém tem 0 ou 1 horas jogadas e eu quero deletar.

existem outros arquivos .ini que fazem outras funções dentro do servidor, por isso é necessário identificar se existe a função pConnectTime, para que não delete vários sistemas..

conseguiu entender?



7. Re: Script para ler todos os arquivos

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 03/05/2016 - 10:58h

rodrigovilhena escreveu:
Boa noite, eu sou dono de um servidor de gta online.
as contas dos jogadores ficam dentro de uma pasta, cada jogador possui um arquivo neste formato: Nome.ini
eu preciso de um script que leia todos os arquivos .ini desta pasta e se o jogador possuir a linha pConnectTime abaixo de entre 0 e 1, automaticamente irá deletar.
Obs: Tem que existir esta linha pConnectTime, pois existem outros scripts em arquivos .ini na mesma pasta.
Podem me ajudar? Obrigado !


Bom dia Rodrigo.
poste o conteúdo de um arquivo jogador.ini

No aguardo,
Marcelo



8. Re: Script para ler todos os arquivos

Rodrigo
rodrigovilhena

(usa Outra)

Enviado em 03/05/2016 - 11:35h

msoliver escreveu:

rodrigovilhena escreveu:
Boa noite, eu sou dono de um servidor de gta online.
as contas dos jogadores ficam dentro de uma pasta, cada jogador possui um arquivo neste formato: Nome.ini
eu preciso de um script que leia todos os arquivos .ini desta pasta e se o jogador possuir a linha pConnectTime abaixo de entre 0 e 1, automaticamente irá deletar.
Obs: Tem que existir esta linha pConnectTime, pois existem outros scripts em arquivos .ini na mesma pasta.
Podem me ajudar? Obrigado !


Bom dia Rodrigo.
poste o conteúdo de um arquivo jogador.ini

No aguardo,
Marcelo


Segue :

Key=3561PWVS
Level=12
AdminLevel=0
SocioLevel=1
DonateRank=6
ConnectedTime=43
Logado=1
Cidade=1
Caixinha=0
EventoOFF=0
CarTime=0
Titulo=
URL=
AdmBan=Onlly_Staff
MotBan=Difamação
DiaBan=13
MesBan=2
AnoBan=2016
Titulon=0
Titulo1=82
Titulo2=0
Titulo3=3
Titulo4=0
Titulo5=6
Titulo6=1
Titulo7=4
Titulo8=0
Titulo9=44
Titulo10=0
Titulo11=0
Titulo12=53
Titulo13=0
Titulo14=0
Titulo15=0
Titulo16=34
Titulo17=23
Titulo18=13
Titulo19=3
Titulo20=0
Titulo21=0
Titulo22=0
Titulo23=11
Titulo24=0
Titulo25=64
Titulo26=0
Mensagem1=1
Mensagem2=1
Mensagem3=1
Mensagem4=1
Galao=0
Veneno=0
Explosiva=0
Antidoto=0
Licencas=0
KitCarro=0
Dinamite=0
Carteira=1
PayMulta=0
Registered=1
Sex=1
Muted=0
Respect=46
Money=98090
Banco=322601827
Crimes=64
Conta=0
Phonebook=1
Bateria=140
LottoNr=0
Emprego=1
Paycheck=3566
SalarioM=12
SalarioS=56
HeadValue=0
HeadValue2=0
Jailed=0
JailTime=0
Materiais=0
Maconha=0
Cocaina=0
Crack=0
Lsd=0
Lider=0
Member=0
Rank=0
Char=23
DetSkill=53
LawSkill=2
MechSkill=0
DrogasSkill=1
pHealth=35.0
Int=3
Local=241
PhoneNr=11349
House=999
Bizz=122
Spawn=0
SafeMaconha=0
SafeCocaina=0
SafeCrack=0
SafeLsd=0
WantedLevel=0
SafeMateriais=0
Pos_x=1653.9
Pos_y=-1655.9
Pos_z=22.5
CarLic=1
MotoLic=1
FlyLic=0
BoatLic=0
CaminhaoLic=1
GunLic=1
Gun1=0
Gun2=0
Gun3=0
Gun4=0
Ammo1=0
Ammo2=0
Ammo3=0
Ammo4=0
RenovarCarro=400
RenovarMoto=340
RenovarBarco=0
RenovarHeli=0
RenovarCaminhao=560
Tutorial=1
Avisos=1
Bonus=0
Moedas=0
AdmOn=0
Controle=0
Fuel=0
Married=0
MarriedTo=Ninguem
PapagaioNome=
IP=201.29.44.93
Luta=0
Dorgado=0
Dorgado2=22
WantedLevel=0
Doenca=0
Creditos=273
Oculos=0
Acessorio=0
Acessorio2=0
TemOculos=0
Papagaio=0
Permitido=0
Bandana=0
TemBandana=0
Kills=0
Deaths=0
TimeEvento=0
Carga=0
Familia=0
Carguinha=0
NoteBook=1
Evento=0
Departamento=0
DiasVIP=14
Mudou=1
Curando=0
AdmRetirado=0
DiaRetirado=13




9. Re: Script para ler todos os arquivos

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 03/05/2016 - 12:25h

rodrigovilhena escreveu:

msoliver escreveu:

rodrigovilhena escreveu:
Boa noite, eu sou dono de um servidor de gta online.
as contas dos jogadores ficam dentro de uma pasta, cada jogador possui um arquivo neste formato: Nome.ini
eu preciso de um script que leia todos os arquivos .ini desta pasta e se o jogador possuir a linha pConnectTime abaixo de entre 0 e 1, automaticamente irá deletar.
Obs: Tem que existir esta linha pConnectTime, pois existem outros scripts em arquivos .ini na mesma pasta.
Podem me ajudar? Obrigado !


Bom dia Rodrigo.
poste o conteúdo de um arquivo jogador.ini

No aguardo,
Marcelo


Segue :

Key=3561PWVS
Level=12
AdminLevel=0
SocioLevel=1
DonateRank=6
ConnectedTime=43
Logado=1
Cidade=1
Caixinha=0
EventoOFF=0
CarTime=0
Titulo=
URL=
AdmBan=Onlly_Staff
MotBan=Difamação
DiaBan=13
MesBan=2
AnoBan=2016
Titulon=0
Titulo1=82
Titulo2=0
Titulo3=3
Titulo4=0
Titulo5=6
Titulo6=1
Titulo7=4
Titulo8=0
Titulo9=44
Titulo10=0
Titulo11=0
Titulo12=53
Titulo13=0
Titulo14=0
Titulo15=0
Titulo16=34
Titulo17=23
Titulo18=13
Titulo19=3
Titulo20=0
Titulo21=0
Titulo22=0
Titulo23=11
Titulo24=0
Titulo25=64
Titulo26=0
Mensagem1=1
Mensagem2=1
Mensagem3=1
Mensagem4=1
Galao=0
Veneno=0
Explosiva=0
Antidoto=0
Licencas=0
KitCarro=0
Dinamite=0
Carteira=1
PayMulta=0
Registered=1
Sex=1
Muted=0
Respect=46
Money=98090
Banco=322601827
Crimes=64
Conta=0
Phonebook=1
Bateria=140
LottoNr=0
Emprego=1
Paycheck=3566
SalarioM=12
SalarioS=56
HeadValue=0
HeadValue2=0
Jailed=0
JailTime=0
Materiais=0
Maconha=0
Cocaina=0
Crack=0
Lsd=0
Lider=0
Member=0
Rank=0
Char=23
DetSkill=53
LawSkill=2
MechSkill=0
DrogasSkill=1
pHealth=35.0
Int=3
Local=241
PhoneNr=11349
House=999
Bizz=122
Spawn=0
SafeMaconha=0
SafeCocaina=0
SafeCrack=0
SafeLsd=0
WantedLevel=0
SafeMateriais=0
Pos_x=1653.9
Pos_y=-1655.9
Pos_z=22.5
CarLic=1
MotoLic=1
FlyLic=0
BoatLic=0
CaminhaoLic=1
GunLic=1
Gun1=0
Gun2=0
Gun3=0
Gun4=0
Ammo1=0
Ammo2=0
Ammo3=0
Ammo4=0
RenovarCarro=400
RenovarMoto=340
RenovarBarco=0
RenovarHeli=0
RenovarCaminhao=560
Tutorial=1
Avisos=1
Bonus=0
Moedas=0
AdmOn=0
Controle=0
Fuel=0
Married=0
MarriedTo=Ninguem
PapagaioNome=
IP=201.29.44.93
Luta=0
Dorgado=0
Dorgado2=22
WantedLevel=0
Doenca=0
Creditos=273
Oculos=0
Acessorio=0
Acessorio2=0
TemOculos=0
Papagaio=0
Permitido=0
Bandana=0
TemBandana=0
Kills=0
Deaths=0
TimeEvento=0
Carga=0
Familia=0
Carguinha=0
NoteBook=1
Evento=0
Departamento=0
DiasVIP=14
Mudou=1
Curando=0
AdmRetirado=0
DiaRetirado=13


Vamos lá ...
O COMANDO abaixo, gera o ARQUIVO "REMOVE.txt", contendo o NOME do ARQUIVO e a VAR ConnectedTime=0 ou 1",
find -iname "*.ini" | xargs egrep --color '^ConnectedTime=[0-1]$' >> REMOVE.txt 

Exemplo:
./Fulano.ini:ConnectedTime=1

Em seguida, execute:
while IFS=":";read -a FIELD;do
rm "${FIELD[0]}"
done < REMOVE.txt

O COMANDO acima, pega o CAMPO 01 de cada linha do arquivo REMOVE.txt , e apaga (rm).
É isso . . .

Se a resposta foi útil, MARQUE-A como a MELHOR....
Assim ganho pontos, o que incentiva a continuar colaborando.

Abç.:
Marcelo Oliver




10. Re: Script para ler todos os arquivos

Rodrigo
rodrigovilhena

(usa Outra)

Enviado em 03/05/2016 - 13:11h

msoliver escreveu:

rodrigovilhena escreveu:

msoliver escreveu:

rodrigovilhena escreveu:
Boa noite, eu sou dono de um servidor de gta online.
as contas dos jogadores ficam dentro de uma pasta, cada jogador possui um arquivo neste formato: Nome.ini
eu preciso de um script que leia todos os arquivos .ini desta pasta e se o jogador possuir a linha pConnectTime abaixo de entre 0 e 1, automaticamente irá deletar.
Obs: Tem que existir esta linha pConnectTime, pois existem outros scripts em arquivos .ini na mesma pasta.
Podem me ajudar? Obrigado !


Bom dia Rodrigo.
poste o conteúdo de um arquivo jogador.ini

No aguardo,
Marcelo


Segue :

Key=3561PWVS
Level=12
AdminLevel=0
SocioLevel=1
DonateRank=6
ConnectedTime=43
Logado=1
Cidade=1
Caixinha=0
EventoOFF=0
CarTime=0
Titulo=
URL=
AdmBan=Onlly_Staff
MotBan=Difamação
DiaBan=13
MesBan=2
AnoBan=2016
Titulon=0
Titulo1=82
Titulo2=0
Titulo3=3
Titulo4=0
Titulo5=6
Titulo6=1
Titulo7=4
Titulo8=0
Titulo9=44
Titulo10=0
Titulo11=0
Titulo12=53
Titulo13=0
Titulo14=0
Titulo15=0
Titulo16=34
Titulo17=23
Titulo18=13
Titulo19=3
Titulo20=0
Titulo21=0
Titulo22=0
Titulo23=11
Titulo24=0
Titulo25=64
Titulo26=0
Mensagem1=1
Mensagem2=1
Mensagem3=1
Mensagem4=1
Galao=0
Veneno=0
Explosiva=0
Antidoto=0
Licencas=0
KitCarro=0
Dinamite=0
Carteira=1
PayMulta=0
Registered=1
Sex=1
Muted=0
Respect=46
Money=98090
Banco=322601827
Crimes=64
Conta=0
Phonebook=1
Bateria=140
LottoNr=0
Emprego=1
Paycheck=3566
SalarioM=12
SalarioS=56
HeadValue=0
HeadValue2=0
Jailed=0
JailTime=0
Materiais=0
Maconha=0
Cocaina=0
Crack=0
Lsd=0
Lider=0
Member=0
Rank=0
Char=23
DetSkill=53
LawSkill=2
MechSkill=0
DrogasSkill=1
pHealth=35.0
Int=3
Local=241
PhoneNr=11349
House=999
Bizz=122
Spawn=0
SafeMaconha=0
SafeCocaina=0
SafeCrack=0
SafeLsd=0
WantedLevel=0
SafeMateriais=0
Pos_x=1653.9
Pos_y=-1655.9
Pos_z=22.5
CarLic=1
MotoLic=1
FlyLic=0
BoatLic=0
CaminhaoLic=1
GunLic=1
Gun1=0
Gun2=0
Gun3=0
Gun4=0
Ammo1=0
Ammo2=0
Ammo3=0
Ammo4=0
RenovarCarro=400
RenovarMoto=340
RenovarBarco=0
RenovarHeli=0
RenovarCaminhao=560
Tutorial=1
Avisos=1
Bonus=0
Moedas=0
AdmOn=0
Controle=0
Fuel=0
Married=0
MarriedTo=Ninguem
PapagaioNome=
IP=201.29.44.93
Luta=0
Dorgado=0
Dorgado2=22
WantedLevel=0
Doenca=0
Creditos=273
Oculos=0
Acessorio=0
Acessorio2=0
TemOculos=0
Papagaio=0
Permitido=0
Bandana=0
TemBandana=0
Kills=0
Deaths=0
TimeEvento=0
Carga=0
Familia=0
Carguinha=0
NoteBook=1
Evento=0
Departamento=0
DiasVIP=14
Mudou=1
Curando=0
AdmRetirado=0
DiaRetirado=13


Vamos lá ...
O COMANDO abaixo, gera o ARQUIVO "REMOVE.txt", contendo o NOME do ARQUIVO e a VAR ConnectedTime=0 ou 1",
find -iname "*.ini" | xargs egrep --color '^ConnectedTime=[0-1]$' >> REMOVE.txt 

Exemplo:
./Fulano.ini:ConnectedTime=1

Em seguida, execute:
while IFS=":";read -a FIELD;do
rm "${FIELD[0]}"
done < REMOVE.txt

O COMANDO acima, pega o CAMPO 01 de cada linha do arquivo REMOVE.txt , e apaga (rm).
É isso . . .

Se a resposta foi útil, MARQUE-A como a MELHOR....
Assim ganho pontos, o que incentiva a continuar colaborando.

Abç.:
Marcelo Oliver



Perfeito amigo, acho que vai funcionar.

só uma dúvida..

na hora de remover os arquivos, vc colocou :

while IFS=":";read -a FIELD;do
rm "${FIELD[0]}"
done < REMOVE.txt

não seria :

while IFS=":";read -a FIELD;do
rm -rf "${FIELD[0]}"
done < REMOVE.txt

rm -rf, para que não fique perguntando e ja remova, certo?




11. Re: Script para ler todos os arquivos

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 03/05/2016 - 13:35h

não seria :

while IFS=":";read -a FIELD;do
rm -rf "${FIELD[0]}"
done < REMOVE.txt

rm -rf, para que não fique perguntando e ja remova, certo?


Neste contexto está certo somente o rm sem opção, pois, além de não estar no sistema e saber como está organizado seus arquivos um rm -rf seria muito perigoso pois ele remove diretórios não vazios também.

Muito cuidado ao usar o rm -rf, um erro e vai tudo para o /dev/null kkkkk





=====================================================================
Não existe saber mais ou saber menos, existem saberes diferentes.
ID = LPI000359879
=====================================================================





12. Re: Script para ler todos os arquivos

Ronaldo Ferreira de Lima
textmode

(usa Slackware)

Enviado em 03/05/2016 - 15:37h

rodrigovilhena escreveu:

textmode escreveu:

Tente primeiro encontrar os arquivos com o find. Exemplo:


find /diretorio_dos_jogadores/ -type f -name '*.ini'


Daí você pega um arquivo da saída e passa como argumento para o grep:


grep pConnectTime arquivo_encontrado_pelo_find.ini


Aquela parte do
abaixo de entre 0 e 1
não faço a menor ideia do se trata.

Se for realizar a tarefa uma única vez não precisa de script. Apenas os comandos digitados no terminal resolvem, mas primeiro teste os comandos que passei e tenha certeza que pelo esta parte funciona. Depois discutimos como prosseguir.


Vou tentar te explicar melhor o que eu desejo fazer..

eu já estou no diretório que contém todas as contas dos jogadores.

meu servidor de gta online, é o maior do Brasil, portanto, existem mais de 1 milhão de contas.

como tem muitas contas, acaba pesando todo o sistema e eu gostaria de eliminar todos os jogadores que entraram, jogaram pouco tempo e não jogam mais, que estão apenas acumulando arquivos sem uso.

o pConnectTime é o que identifica dentro do jogo quantas horas jogadas ele tem, essa variável é criada automaticamente quando o jogador cria a conta, portanto, vai iniciar como 0, eu gostaria de deletar todos os arquivos .ini que contenham o pConnectTime e que sejam abaixo de 1, ou seja, a conta existe, porém tem 0 ou 1 horas jogadas e eu quero deletar.

existem outros arquivos .ini que fazem outras funções dentro do servidor, por isso é necessário identificar se existe a função pConnectTime, para que não delete vários sistemas..

conseguiu entender?


Neste caso, recomendo fortemente contratar alguém para o serviço, a situação é delicada e exige uma boa fase preliminar de análise dos requesitos bem como das restrições técnicas.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts