Estou tentando criar um script "simples" que vou usar para criar alguma documentação para máquinas Unix / Mac.
Recebi com sucesso a informação de que preciso, mas parece que não posso enviá-la para um servidor da Web que criei com o CURL porque ela fornece alguns espaços em branco e caracteres na saída de informações.
Eu tentei com muitos métodos, mas nada parece funcionar corretamente ..
Esta é a saída de URL que o script enviará para curl:
"ip.ip.ip.ip/documentation/index.php?avdelning=XX&user=XXX&hostname=XXX&model=ModelName:MacminiModelIdentifier:Macmini4,1&RAM=Memory:8GB&CPU=ProcessorName:IntelCore2DuoProcessorSpeed:2.4GHzNumberofProcessors:1&CPUCORES=TotalNumberofCores:2&MACADDRESS=etherxx:xx:xx:xx:xx:xx&SERIALNUMBER=SerialNumber(system):XXXXXXXX&LASTLOGGEDIN=XXXXX
Usar somente a seguinte string funcionará se eu fizer isso diretamente com o CURL e não me dará nenhum erro e eu recebo as informações no servidor web.
Mas quando eu uso o script, não funciona.
O script:
#!/bin/bash
STR_RAM=$(/usr/sbin/system_profiler SPHardwareDataType | grep Memory: | sed 's/ //g');
STR_MODEL=$(/usr/sbin/system_profiler SPHardwareDataType | grep Model | sed 's/ //g');
STR_CPUNAME=$(/usr/sbin/system_profiler SPHardwareDataType | grep Processor | sed 's/ //g');
STR_CPUCORES=$(/usr/sbin/system_profiler SPHardwareDataType | grep Cores: | sed 's/ //g');
STR_SERIAL=$(/usr/sbin/system_profiler SPHardwareDataType | grep Serial | sed 's/ //g');
STR_MACADDR=$(ifconfig | grep en0 -A3 | grep ether | sed 's/ //g');
STR_LOGGEDIN=$(finger | tail -1 | sed 's/ //g');
STR_HOSTNAME=$(hostname | sed 's/ //g');
STR_URL=ip.ip.ip.ip/documentation/index.php?avdelning=$1\&user=$2\&hostname=$STR_HOSTNAME\&model=$STR_MODEL\&RAM=$STR_RAM\&CPU=$STR_CPUNAME\&CPUCORES=$STR_CPUCORES\&MACADDRESS=$STR_MACADDR\&SERIALNUMBER=$STR_SERIAL\&LASTLOGGEDIN=$STR_LOGGEDIN;
STR_URL2=$(echo $STR_URL | sed 's/ //g' | awk '{printf("\"%s\"\n", $0);}');
curl $STR_URL2;
Como você pode ver, eu adicionei um monte de edição provavelmente desnecessária com sed e awk, mas nada parece funcionar.
Eu recebo estas mensagens de erro:
Depois de adicionar o awk para adicionar aspas duplas antes e depois da string da URL, obtenho:
Could not resolve "ip.ip.ip.ip
O que é muito estranho, já que posso executar o comando curl diretamente no terminal sem esse erro.
E se eu não remover os espaços etc eu recebo várias linhas que o URL não pode ser resolvido. Eu tentei com urlencoding em perl e bash mas isso não parece corrigir o problema também.
Estou executando isso em um Mac agora.
Uso: sudo sh script.sh randomstring randomstring
EDITAR:
Saída de novo script
sudo sh script2.sh IT Denniz
curl: (3) Illegal characters found in URL
xx.xx.xx.xx/documentation/index.php?avdelning=XX&user=Denniz&hostname=admins-Mac-mini-2.local&model=ModelName:Macmini
ModelIdentifier:Macmini4,1&RAM=Memory:8GB&CPU=ProcessorName:IntelCore2Duo
ProcessorSpeed:2.4GHz
NumberofProcessors:1&CPUCORES=TotalNumberofCores:2&MACADDRESS= etherXX:XX:XX:XX:XX&SERIALNUMBER=SerialNumber(system):XXXXXXXXXXX&LASTLOGGEDIN=adminadmins008Jun10:21