Resumen:
getprop net.hostname
(Nombre de host del sistema Android, probablemente nombre de tipo android_24412414)
echo $HOSTNAME
(nombre de host de shell / terminal / env, probablemente ro.product.device de build.prop)
cat /proc/sys/kernel/hostname
(Nombre de host del sistema Linux, probablemente localhost )
head /etc/hosts
(Nombre de host del sistema Linux, probablemente localhost )
hostname
(El comando no siempre está instalado, si se instala a través del cuadro ocupado, leerá / proc / sys / kernel / hostname )
Depende de la versión de Android que tenga.
Android 4.0 y superior
Las versiones más nuevas utilizarán la build.prop
entrada correcta . Bueno, es decir, Android lee el build.prop
proceso de arranque normal. Una vez que se ejecuta el Servicio de conectividad, verifica si net.hostname está configurado en la Configuración, luego, si está vacío, utiliza la ID de Android "android_" + (permanente). Entonces eso es todo lo que necesitas hacer.
Agregar net.hostname=HOSTNAMEHERE
a /system/build.prop
(puede ser necesaria la raíz). Deje una línea en blanco al final del archivo.
ConnectivityService.java de Kitkat, observe la declaración 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 y versiones inferiores
Las versiones anteriores, Gingerbread, Froyo, etc., simplemente lo golpean. No molesta verificar. Establecerá net.hostname en android_24412414 ... pase lo que pase. Por lo tanto, deberá cambiarlo una vez que el Servicio de conectividad haya terminado de cargarse. Afortunadamente, solo ejecuta el inicio una vez, no en cada nueva conexión. Entonces solo tenemos que correr setprop net.hostname HOSTNAMEHERE
después de eso para que se pegue. Desafortunadamente, se ejecuta bastante tarde en el proceso de arranque, por lo que necesita algo que haga los cambios en boot_complete. Lo más probable es que una aplicación se ejecute sola.
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);
Pero luego hay otro problema.
¡La configuración net.hostname no se copia en todo el sistema! Si usa una aplicación de consola / terminal, es posible que no obtenga el mismo nombre de host. Mi teléfono, un Samsung Sidekick 4G (basado en semi-Galaxy S) tiene un init.rc que se ejecuta hostname localhost
, por lo que todos los comandos debajo no verán su nombre de host build.prop ni el nombre de host android_id. Así que también debes configurar eso.
hostname HOSTNAMEHERE
o echo HOSTNAMEHERE > /proc/sys/kernel/hostname
Nota: Dependiendo de cómo lo esté haciendo, necesitará ejecutar el comando anterior como root para que funcione. Init.rc generalmente se encuentra en la partición del sistema de solo lectura, por lo que se necesita acceso de root para editarlo.
El comando dhcpcd, que se ejecuta para obtener una dirección dhcp, no se actualizará a un nombre de host proporcionado por el servidor (eso se puede solucionar agregando dhcpcd-run-hooks y dhcpcd.conf), y no proporcionará un nombre de host al servidor dhcp si $(hostname)
(El comando hostname) está en blanco o localhost, y no utiliza internamente net.hostname. libnetutils se usa para llamar a dhcpcd con -h "net.hostname", pero si por alguna razón decide no llamar con -h, DHCPCD TODAVÍA ENVIARÁ EL NOMBRE DEL SISTEMA a través de gethostname (), siempre que no sea "(none) "," localhost "o vacío. En Stock Froyo de todos modos. Samsung atornilló al perro en algunos dispositivos como el mío. No se transfiere el nombre de host, el tiempo de red forzado, etc.
Mi solución para Gingerbread y debajo de Samsung, edite la configuración de DHCP Client Daemon:
Lo último que puede hacer es editar /etc/dhcpcd/dhcpcd.conf. Si agrega hostname YOURHOSTNAME
al archivo, lo usará, a menos que se proporcione un nombre de host en la línea de comandos. Esto no solucionará el problema de android_234etc, pero lo hará si el nombre de host es localhost (Mi problema, ya que Samsung atornilló libnetutils y localhost en init.rc). Necesitará Root, pero esto funciona en todos los reinicios. Esto no funcionará si se llama a dhcpcd con la opción -h Hostname.