Golang est un langage compilé fortement typé qui est largement utilisé dans les conteneurs, le cloud computing, les microservices et d'autres domaines. Lorsque vous utilisez Golang pour la programmation réseau, la modification de l'adresse IP est l'une des opérations courantes. Cet article explique comment modifier l'adresse IP à l'aide du langage de programmation Golang.
Avant de commencer à modifier l'IP, nous devons obtenir l'adresse IP actuelle de la machine. Il est très pratique d'obtenir l'adresse IP locale en utilisant Golang. Le package "net" de la bibliothèque standard Golang fournit la fonction d'obtention de l'adresse IP locale. Ce qui suit est un programme simple pour obtenir l'adresse IP de cette machine :
package main import ( "fmt" "net" ) func main() { addrs, err := net.InterfaceAddrs() if err != nil { fmt.Println(err) } for _, addr := range addrs { if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() { if ipnet.IP.To4() != nil { fmt.Println(ipnet.IP.String()) } } } }
Dans le code ci-dessus, nous appelons d'abord la fonction InterfaceAddrs() dans le package net pour obtenir toutes les interfaces réseau de cette machine, puis utilisons un for boucle pour parcourir toutes les interfaces et trouver l’adresse IP qu’elle contient. Si l'adresse IP n'est pas une adresse de bouclage, imprimez-la.
Après avoir obtenu l'adresse IP de la machine, l'étape suivante consiste à modifier l'adresse IP. Dans Golang, pour modifier l'adresse IP, vous devez utiliser le sous-package "netlink" dans le package "net". Utilisez le package netlink pour créer, supprimer et modifier des connexions réseau, des appareils, des adresses, etc. Voici un programme pour modifier l'IP :
package main import ( "fmt" "net" "os/exec" ) func main() { ip := "192.168.31.222" mask := "255.255.255.0" iface := "eth0" cmd := exec.Command("ip", "addr", "flush", "dev", iface) err := cmd.Run() if err != nil { fmt.Println(err) } link, err := netlink.LinkByName(iface) if err != nil { fmt.Println(err) } addr, err := netlink.ParseAddr(fmt.Sprintf("%s/%s", ip, mask)) if err != nil { fmt.Println(err) } err = netlink.AddrAdd(link, addr) if err != nil { fmt.Println(err) } err = netlink.LinkSetUp(link) if err != nil { fmt.Println(err) } }
Dans le code ci-dessus, nous définissons d'abord trois variables ip, mask et iface, qui représentent respectivement l'adresse IP, le masque de sous-réseau et le nom de l'interface réseau qui doivent être modifiés. Utilisez ensuite la commande ip addr flush
pour effacer toutes les adresses de la carte réseau eth0. Si l'opération de suppression réussit, passez à l'étape suivante, sinon le programme se terminera ici. Utilisez ensuite la fonction LinkByName() dans le package netlink pour rechercher la carte réseau nommée eth0. Ensuite, définissez une adresse addr et analysez l'adresse IP et le masque de sous-réseau dans une structure d'adresse via la fonction ParseAddr() du package netlink. Ensuite, appelez la fonction AddrAdd() dans le package netlink pour ajouter la nouvelle adresse à la carte réseau eth0. Enfin, appelez la fonction LinkSetUp() dans le package netlink pour activer la carte réseau eth0. Ceci termine la modification de l’adresse IP.
Il convient de noter que le programme ci-dessus doit être exécuté en utilisant sudo et doit être exécuté dans un environnement Linux.
Conclusion
Cet article explique comment utiliser le langage de programmation Golang pour modifier l'adresse IP. Nous obtenons d'abord l'adresse IP de la machine locale via le package "net", puis utilisons le sous-package "netlink" pour modifier l'adresse IP. La programmation réseau est l'une des forces de Golang. En étudiant cet article, vous pouvez mieux comprendre les connaissances associées à la programmation réseau dans Golang.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!