Hola. Comparto con ustedes este básico y simple programa que hice para deshabilitar y habilitar rápidamente, tras la elección de una o dos opciones, la conexión a internet.
Ante una eventual emergencia, una necesidad que no se esperaba; o un insospechado apuro, esta herramienta les servirá, quizás, de atajo. 
Imagen

Imagen
Imagen
Imagen



Imagen
Imagen
Imagen

Código fuente:

 #include<chrono>
 #include<fstream>
 #include<iostream>
 #define AZUL "\033[34m" /* Azul */
 #define VERDE "\033[32m" /* Verde */
 #define RED     "\033[31m"      /* Red */
 #define RESET "\033[0m"

 using namespace std;

 void clear() {
     system("clear");
 }

 void espacio() {
     cout<<endl;
 }

 void pausa() {
      system("read -p 'Presione una tecla para continuar.' var");
 }

 bool archivoabuscar_existe(string nombre)
 {
    ifstream archivoabuscar(nombre.c_str());
    return archivoabuscar.good();
 }

 int main() {
    clear();
   
    auto ahora = chrono::system_clock::now();
    time_t end_time = chrono::system_clock::to_time_t(ahora);
    espacio();
    cout<<AZUL<<ctime(&end_time)<<RESET<<endl;
    short int opcion;
    string ubicacion = "/usr/sbin/ufw";
    
 do{
   
    cout<<"|--------------------------------------------------|"<<endl;
    cout<<"|Deshabilitar y habilitar conexión [varios métodos]|"<<endl;
    cout<<"|--------------------------------------------------|"<<endl;
    espacio();
    cout<<" - DESHABILITAR"<<endl;
    espacio();
    cout<<"Elija una opción (numérica): "<<endl;
    espacio();
    cout<<"1.Método ip config"<<endl;
    espacio();
    cout<<"2.Sobreescribir o crear resolv.conf con líneas vacías"<<endl;
    espacio();
    cout<<"3.Anular conexión con firewall ufw"<<endl;
    espacio();
    cout<<" - HABILITAR"<<endl;
    espacio();
    cout<<"4. Restablecer conexión"<<endl;
    espacio();
    cout<<"5. Verificar conexión"<<endl;
    espacio();
    cout<<"6. Salir"<<endl;
    cin>>opcion;
    cin.clear();
    cin.ignore();

 if ((opcion != 1 ) && (opcion != 2 ) && (opcion != 3 ) && (opcion != 4 ) && (opcion != 5 ) && (opcion != 6))   {
 cout<<"¡!Error! Caracteres admitidos: 1, 2, 3, 4, 5, o 6";
 espacio();
 pausa();
 clear();
 }

 else
 {
 switch(opcion){

    case 1:
    system("ifconfig eth0 down");
    cout<<"Hecho: "<<RED<<"Conexión deshabilitada."<<RESET<<endl;
    espacio();
    pausa();
    break;
        
    case 2:
    system("echo > /etc/resolv.conf"); 
    espacio();
    cout<<"Hecho:     "<<RED<<"Archivo resolv.conf, nulo."<<RESET<<endl;
    espacio();
    break;

    case 3:
        if (archivoabuscar_existe(ubicacion))
    {
        cout<<VERDE<<"Programa firewall ufw está instalado."<<RESET<<endl;
        espacio();
        system("sudo ufw status");
        espacio();
        }

    else

    {
        cout<<RED<<"El programa firewall ufw no se encuentra; será instado automáticamente..."<<RESET<<endl;
        system("sudo apt install ufw -y");
    }
    espacio();
    pausa();
    espacio();
    system("sudo ufw default deny outgoing");
    espacio();
    system("sudo ufw default deny incoming");
    espacio();
    cout<<"Hecho: "<<RED<<"Conexión bloqueada con ufw firewall"<<RESET<<endl;
    espacio();
    break;

    case 4:
    system("ifconfig eth0 up");
    cout<<"Hecho: "<<VERDE<<"conexión habilitada."<<RESET<<endl;   
    espacio();
    pausa();
    espacio();
    cout<<"Hecho: "<<VERDE<<"Archivo resolv.conf "<<RESET<<"creado."<<RESET<<endl;
    espacio();
    system("echo nameserver 1.1.1.1 nameserver 8.8.8.8 nameserver 8.8.4.4 > /etc/resolv.conf");
    pausa();
    espacio();
    if (archivoabuscar_existe(ubicacion))
    {
        cout<<VERDE<<"Programa firewall ufw está instalado."<<RESET<<endl;
        espacio();
        system("sudo ufw status");
        espacio();
        }

    else

    {
        cout<<RED<<"El programa firewall ufw no se encuentra; será instado automáticamente..."<<RESET<<endl;
        system("sudo apt install ufw -y");
    }
    pausa();
    espacio();
    cout<<"Hecho: "<<VERDE<<"ufw conexiones entrantes y salientes permitidas"<<RESET<<endl;
    espacio();
    system("sudo ufw default allow outgoing");
    espacio();
    system("sudo ufw default allow incoming");
    espacio();
    break;

    case 5:
    cout<<"El programa está haciendo ping:"<<endl;
    espacio();
    system("ping -c 4 [Enlace externo eliminado para invitados]");
    espacio();
    pausa();
    espacio();
    cout<<"Archivo "<<VERDE<<"resolv.conf:"<<RESET<<endl;
    espacio();
    system("ls /etc/resolv.conf");
    espacio();
    pausa();
    espacio();
    cout<<VERDE<<"Contenido del archivo resolv.conf:"<<RESET<<endl;
    espacio();
    system("cat /etc/resolv.conf");
    espacio();
    pausa();
    break;

    case 6:
    exit(0);   
    break;
 }
 }

 }while(true);
 return 0;
 }

 
Imagen
Imagen
Omití en el condicional if del case 3 escribir las lnstrucciones del firewall ufw.

Código corregido:
Imagen
Código fuente:


        if (archivoabuscar_existe(ubicacion))
    {
        cout<<VERDE<<"Programa firewall ufw está instalado."<<RESET<<endl;
        espacio();
        system("sudo ufw status");
        espacio();
        system("sudo ufw default deny outgoing");
        espacio();
        system("sudo ufw default deny incoming");
        espacio();
        }
 
Imagen
Imagen
Responder

Volver a “Fuentes”