Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luiz Carlos Filho

Programa que troca ip da máquina

Recommended Posts

Oi pessoal. Eu tenho um programa que troca algumas configurações de rede de máquinas windows. O programa já roda a mais de ano mas não tem a função de atribuir um endereço que o usuário desejar, só possibilita endereços pré-programados. Atende os meus usuários porque eles usam sempre os mesmos ips quando estão em trânsito nas diferentes filiais.

 

Então resolvi incluir a função de entrar com os endereços manualmente. Fiz o algorítimo abaixo mas está dando um erro com a função system ao tentar compilar.

 

#include <stdio.h>
#include <iostream>

int main()
{
    char ip,submask,gateway,dns[20]; //declaracoes
    printf("entre com o endereco IP, máscara sub-rede, gateway padrao e servidor DNS\n");
    scanf("%s%s%s%s",&ip,&submask,&gateway,&dns); //ler valores
    printf("Alterando suas configura%c%ces de rede, por favor aguarde...\n", 135, 228); //codigos para acentuar palavras
    system ("netsh firewall set opmode DISABLE"); //desabilitando firewall
    system ("netsh int ip set address name=\"Conexao local\" source=static %s %s %s 1",ip,submask,gateway); //alterando ip, sm e gw
    system ("netsh int ip set dns \"Conexao local\" static $s",dns); //alterando dns
    return(0);
}

Erro ao tentar compilar:

_CRTIMP int __cdecl system (const char*);

_CRTIMP char* __cdecl getenv (const char*);

 

 

talvez essa função não permita que eu jogue uma string dentro dela.

 

Alguém sabe o que posso fazer pra resolver isso? Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom fiz desse jeito + naum testei, da uma olhada:

 

#include <iostream>

int main(){
    char ip[16] ,submask[16] ,gateway[16] ,dns[20]; //declaracoes
    char *msg1, *msg2;
    printf("Entre com o endereco IP, máscara sub-rede, gateway padrao e servidor DNS\n");
    scanf("%s%s%s%s%*c", ip, submask, gateway, dns); //ler valores
    sprintf(msg1, "netsh int ip set address name=\"Conexao local\" source=static %s %s %s 1",ip,submask,gateway);
    sprintf(msg2, "netsh int ip set dns \"Conexao local\" static %s",dns);
    printf("Alterando suas configura%c%ces de rede, por favor aguarde...\n", 135, 228); //codigos para acentuar palavras
    system ("netsh firewall set opmode DISABLE"); //desabilitando firewall
    system (msg1); //alterando ip, sm e gw
    system (msg2); //alterando dns
    return(0);
}

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá. Desculpe a demora. Problemas técnicos.

 

executei o código e procurei entendê-lo. Rodou bem, mas a parte do dns não é executada.

 

 

gostaria de saber o que é o "*c" abaixo na leitura das variaveis.

 

printf("Entre com o endereco IP, máscara sub-rede, gateway padrao e servidor DNS\n");

scanf("%s%s%s%s%*c", ip, submask, gateway, dns);

 

Desde já, agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom acho q a do dns n é executada pq digitei errado n é $s e sim %s ¬¬'

 

e sobre esse %*c de uma olhada: http://forum.imasters.com.br/index.php?/topic/336835-tutorial-systempause-e-fflushstdin/

 

--

Vou editar no meu post para corrigir esse erro!

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom acho q a do dns n é executada pq digitei errado n é $s e sim %s ¬¬'

 

e sobre esse %*c de uma olhada: http://forum.imasters.com.br/index.php?/topic/336835-tutorial-systempause-e-fflushstdin/

 

--

Vou editar no meu post para corrigir esse erro!

 

[]s

 

 

ah sim, eu já tinha percebido esse erro e corrigido, mas mesmo assim o dns não funciona, mesmo o comando estando certo(fiz direto pelo prompt do dos e funcionou).

 

vou continuar com os testes aqui. Se descobrir uma coisa, avisa

 

e muito obrigado pela ajuda até agora!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa.

 

Eu estava fazendo umas tentativas e notei o seguinte. Quando eu declaro dns[16] para a variável que vai receber o servidor dns, o programa fecha com um erro(aqueles clássicos do windows). Se eu definir o tamanho 20, ele executa até o final mas novamente não troca o dns.

 

 

O.o

Compartilhar este post


Link para o post
Compartilhar em outros sites

poste pra mim como está sendo duas entradas.

pq engraçado o primeiro funcionar e o segundo n!

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

poste pra mim como está sendo duas entradas.

pq engraçado o primeiro funcionar e o segundo n!

 

[]s

 

muito estranho. Segue o código abaixo.

 

#include <iostream>

int main(){
    char ip[16],submask[16],gateway[16],dns[20]; //declaracoes
    char *msg1, *msg2;
    printf("Entre com o endereco IP, máscara sub-rede, gateway padrao e servidor DNS\n");
    scanf("%s%s%s%s%*c", ip, submask, gateway,dns); //ler valores
    sprintf(msg1, "netsh int ip set address name=\"Conexao local\" source=static %s %s %s 1",ip,submask,gateway);
    sprintf(msg2, "netsh int ip set dns \"Conexao local\" source=static %s",dns);
    //printf("Alterando suas configura%c%ces de rede, por favor aguarde...\n", 135, 228); //codigos para acentuar palavras
    //system ("netsh firewall set opmode DISABLE"); //desabilitando firewall
    system (msg1); //alterando ip, sm e gw
    system (msg2); //alterando dns
    return(0);
}

cheguei até a tirar do código a parte que troca ip, deixando só a parte de dns. Mas nada mudou. Muito estranho ¬¬

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entaum eu disse para postar as entradas q você esta dando para o programa(inputs) e n o fonte =p!

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entaum eu disse para postar as entradas q você esta dando para o programa(inputs) e n o fonte =p!

 

[]s

 

 

 

Desculpe a demora. Segue abaixo.

 

192.168.1.201

enter

255.255.255.0

enter

192.168.1.254

enter

192.168.1.254

enter

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.