Sommaire:
getprop net.hostname
(Nom d'hôte du système Android, nom de type android_24412414 probable)
echo $HOSTNAME
(nom d'hôte shell / terminal / env, probablement ro.product.device de build.prop)
cat /proc/sys/kernel/hostname
(Nom d'hôte du système Linux, probablement localhost )
head /etc/hosts
(Nom d'hôte du système Linux, probablement localhost )
hostname
(La commande pas toujours installée, si installée via une boîte occupé, lira / proc / sys / kernel / hostname )
Cela dépend de la version d'Android que vous possédez.
Android 4.0 et supérieur
Les nouvelles versions utiliseront la bonne build.prop
entrée. Eh bien, c’est-à-dire qu’Android lit le build.prop
processus de démarrage normal. Une fois le service de connectivité exécuté, il vérifie si net.hostname est défini dans les paramètres. S'il est vide, il utilise ensuite l'ID android_ "+" (permanent). Donc c'est tout ce que vous devez faire.
Ajouter net.hostname=HOSTNAMEHERE
à /system/build.prop
(une racine peut être nécessaire). Laissez une ligne vide à la fin du fichier.
Kitkat ConnectivityService.java, notez la déclaration IF isEmpty :
// setup our unique device name
if (TextUtils.isEmpty(SystemProperties.get("net.hostname"))) {
String id = Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.ANDROID_ID);
if (id != null && id.length() > 0) {
String name = new String("android-").concat(id);
SystemProperties.set("net.hostname", name);
Android 2.3 et inférieur
Les versions plus anciennes, Gingerbread, Froyo, etc. Ça ne dérange pas de vérifier. Il va définir net.hostname sur android_24412414 ... peu importe quoi. Vous devrez donc le changer une fois le chargement du service de connectivité terminé. Heureusement, il ne lance le démarrage qu'une seule fois, pas à chaque nouvelle connexion. Il faut donc courir setprop net.hostname HOSTNAMEHERE
après pour que ça colle. Malheureusement, le processus de démarrage s'exécute assez tard. Vous avez donc besoin de quelque chose qui modifiera boot_complete. Très probablement une application qui fonctionne par elle-même.
ConnectivityService.java de Froyo :
// setup our unique device name
String id = Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.ANDROID_ID);
if (id != null && id.length() > 0) {
String name = new String("android_").concat(id);
SystemProperties.set("net.hostname", name);
Mais alors il y a un autre problème.
Le paramètre net.hostname n'est pas copié dans tout le système! Si vous utilisez une application console / terminal, vous n'obtiendrez peut-être pas le même nom d'hôte. Mon téléphone, un Samsung Sidekick 4G (semi-Galaxy S), a un init.rc qui s'exécute hostname localhost
. Toutes les commandes situées en dessous ne verront ni votre nom d’hôte build.prop ni le nom d’hôte android_id! Donc, vous devez définir cela aussi.
hostname HOSTNAMEHERE
ou echo HOSTNAMEHERE > /proc/sys/kernel/hostname
Remarque: pour que cela fonctionne, vous devez exécuter la commande ci-dessus en tant qu'utilisateur root pour que cela fonctionne. Init.rc se trouve généralement sur la partition système en lecture seule; un accès root est donc nécessaire pour la modifier.
La commande dhcpcd, qui est exécutée pour obtenir une adresse dhcp, ne sera pas mise à jour avec un nom d’hôte fourni par le serveur (cela peut être corrigé en ajoutant les bons droits dhcpcd-run-hooks et dhcpcd.conf), et elle ne fournira pas de nom d’hôte. au serveur DHCP si $(hostname)
(la commande hostname) est vide ou localhost et n'utilise pas en interne net.hostname. libnetutils est utilisé pour appeler dhcpcd avec -h "net.hostname", mais si, pour une raison quelconque, il décide de ne pas appeler avec -h, DHCPCD ENVOIE ENCORE DU NOM D'HÔTE DU SYSTÈME via gethostname (), tant que ce n'est pas "(none) "," localhost "ou vide. Sur Stock Froyo quand même. Samsung a vissé le chien sur certains appareils comme le mien. Aucun nom d’hôte ne passe, temps réseau forcé, etc.
Ma solution pour Gingerbread et au-dessous de Samsung, modifiez la configuration du démon du client DHCP:
La dernière chose que vous pouvez faire est d’éditer /etc/dhcpcd/dhcpcd.conf. Si vous ajoutez hostname YOURHOSTNAME
au fichier, il l'utilisera, sauf si un nom d'hôte est indiqué sur la ligne de commande. Cela ne résoudra pas le problème d'Android_234etc, mais le sera si le nom d'hôte est localhost (mon problème, car Samsung a vissé libnetutils et localhost dans init.rc). Vous aurez besoin de Root, mais cela fonctionne après les redémarrages. Cela ne fonctionnera pas si dhcpcd est appelé avec l'option -h Nom_Hôte.