Android的ifconfig
① 怎麼在android下安裝更多的linux命令ifconfig在終端模擬器里not found
一般是安裝busybox工具箱
② 請教一個在android下執行ifconfig命令的問題
android下沒有ifconfig命令., 雖然android是linux內核 ,但是不代表它是linux, 跟pc還是有點不一樣的, 有很多linux命令在android上是沒辦法執行的.
③ android怎麼區分wlan0,wlan1網卡
eth0,eth1,eth2……代表網卡一,網卡二,網卡三……
lo代表127.0.0.1,即localhost
wlan0代表無線網卡
在執行ifconfig 命令後,系統將在內核表中設置必要的參數,這樣Linux 就知道如何與網路上的網卡通信。ifconfig 命令有以下兩種格式:
※ifconfig [interface]
※ifconfig interface [aftype] option | address …
ifconfig 的第一種格式(或使用不帶任何參數的ifconfig 命令)可以用來查看當前系統的網路配置情況。
在剛剛安裝完系統之後,實際上是在沒有網卡或者網路連接的情況下使用Linux,但通過ifconfig 可以使用回繞方式工作,使計算機認為自己工作在網路上。
現在我們運行一下ifconfig 命令,不帶參數的ifconfig 命令可以顯示當前啟動的網路介面,其輸出結果為:
[root@machine1 /sbin]#ifconfig
eth0 Link encap:Ethernet HWaddr 52:54:AB:DD:6F:61
inet addr:210.34.6.89 Bcast:210.34.6.127 Mask:255.255.255.128
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:46299 errors:0 dropped:0 overruns:0 frame:189
TX packets:3057 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:5 Base address:0xece0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:44 errors:0 dropped:0 overruns:0 frame:0
TX packets:44 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
其中以eth0 為首的部分是本機的乙太網卡配置參數,的設這里顯示了網卡的設備名/dev/eth0 和硬體的MAC 地址52:54:AB:DD:6F:61, MAC 地址是生產廠家定的,每個網卡擁有的唯一地址。
不過我們可以手工改動網卡的MAC 地址,只要我們在/etc/rc.d/init.d/中的network 中加入:
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
Jiania 解說 注:
eth0,eth1,eth2,代表網卡一,網卡二,網卡三
hw 代表hardware 硬體意思
ether 代表ethernet 乙太網的意思
然後重啟,此時再用ifconfig 命令查看一下,我們就會發現網卡的MAC 地址已經變成xx:xx:xx:xx:xx:xx了。
ifconfig配置網卡
配置網卡的IP地址
ifconfig eth0 192.168.0.1 netmask 255.255.255.0
在eth0上配置上192.168.0.1 的IP地址及24位掩碼。 若想再在eth0上在配置一個192.168.1.1/24 的IP地址怎麼辦?用下面的命令
ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0
這時再用ifconifg命令查看,就可以看到兩個網卡的信息了,分別為:eth0和eth0:0.若還想再增加IP,那網卡的命名就接著是:eth0:1、eth0:2……想要幾個就填幾個。ok!
配置網卡的硬體地址
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx就將網卡的硬體地址更改了,此時你就可以騙過區域網內的IP地址邦定了。
將網卡禁用
ifconfig eth0 down
將網卡啟用
ifconfig eth0 up
ifconfig 命令的功能很強大,還可以設置網卡的MTU,混雜模式等。
④ 求助 如何在程序中設置Android的乙太網IP地址
ifconfig eth0 [IP] netmask [NETMASK]
route add default gw [GATEWAY] dev eth0
setprop net.eth0.dns1 8.8.8.8
setprop net.eth0.dns2 4.4.4.4
----------------------------
getprop查看信息
激活(如果已經up可不用輸此命令): eth0 UP [IP ADDR] [NETMASK] 0x00001043(該值從getprop中來)
你可以在adb下先測試一下 netcfg 可查看網卡信息
以上中括弧均去掉
⑤ 請教一個在android下執行ifconfig命令的問題
在Android上安裝shell模擬器,然後直接執行命令,但是 ifconfig是root用戶的命令,安卓上沒有內置這個命令,但是可以執行ip addr命令
⑥ 如何讓android 程序 獲得 root許可權
一般來說, Android 下的應用程序可以「直接」得到的最大的許可權為 system ,但是如果我們需要在程序中執行某些需要 root 許可權的命令,如 ifconfig 等,就需要 root 許可權了。按照 Simon 的文章中提到的,應用程序有以下兩種辦法臨時獲得 root 許可權:
1) 實現一個 init 實現一個 Service ,來幫助 Android 應用程序執行 root 許可權的命令。
2) 實現一個虛擬設備,這個設備幫助 Android 應用程序執行 root 許可權的命令。
第二種辦法我這里沒有嘗試,暫時也不會。這里講講我在實現第一種辦法的過程和遇到的一些問題。
1. 將我們要執行的命令寫成腳本,或者可執行程序。
下面是我的腳本 ifconfig_test.sh :
# ! /system/bin/sh
ifconfig
注意: 腳本的第一行必須為 # ! /system/bin/sh ,否則無法執行,通過 dmesg 可以查看到信息內容為 cannot execve ./ifconfig_test.sh: Exec format error
也可以採用 C/C++ 編寫需要執行的命令或者程序,並在編譯 image 的時候編譯成可執行程序。
2. 在 init.rc 中注冊 service
Android 中的 service 需要在 init.rc 中注冊, Init.rc 中定義的 Service 將會被 init 進程創建,這樣將可以獲得 root 許可權。當得到相應的通知(通過屬性設置)後, init 進程會啟動該 service 。
本文中注冊的內容如下:
service ifconfig_test /system/etc/ifconfig_test.sh
oneshot
disabled
其中, oneshot 表示程序退出後不再重新啟動, disabled 表示不在系統啟動時啟動。
注意: 這里 service name 不能超過 16 個字元。我之前的 service name 由於定義的比較長, 18 個字元,設置屬性通知 service 啟動後查看 dmesg 可以看到提示: init: no such service 。查看 /system/core/init/parser.c 的源代碼,在 parse_service->valid_name 函數中可以看到如下內容: if (strlen(name) > 16) { return 0; } ,證明 service 的名字的確不能超過 16 個字元。
3. 將 Android 應用程序提升為 system 許可權
既然應用程序可以通過啟動 service 獲得 root 許可權,那麼豈不是很不安全。 Android 考慮到了這點,規定只有 system 許可權的應用程序才能設置屬性,通知 service 啟動。關於提升 system 許可權的文章網上已有很多,這里就不再細說,
4. 在應用程序中添加屬性設置代碼
前面已經提到,對於 Android 來說,應用程序通知 init 啟動 service 是通過設置系統屬性來完成的,具體為設置 System 系統屬性 「ctl.start」 為 「ifconfig_test」 ,這樣 Android 系統將會幫我們運行 ifconfig_test 這個 service 了。
對該系統屬性的設置有三種方法,分別對應三種不同的應用程序:
1) Java 代碼
Android 在 Java 庫中提供 System.getProperty 和 System.setProperty 方法, Java 程序可以通過他們來設置和獲得屬性。代碼如下:
SystemProperties.set("ctl.start", "ifconfig_test");
上面的代碼是通知 Android 執行 ifconfig_test service ,如果需要查詢當前 service 執行的狀態,如是否執行完畢,可以通過如下代碼查詢:
ret = SystemProperties.get("init.svc. ifconfig_test ", "");
if(ret != null && ret.equals("stopped"))
{
return true;
}
2) JNI 代碼
當編寫 NDK 的程序時,可以使用 property_get 和 property_set 這兩個 API 來獲得和設置屬性。使用這兩個 API 必須要包含頭文件 cutils/properties.h 和鏈接 libcutil 庫。
3) Shell 腳本
Android 提供了命令行 setprop 和 getprop 來設置和獲取屬性,他們可以在腳本中被使用。
由於我的程序是在 JNI 中調用腳本,腳本中又執行 ifconfig ,因此我將設置屬性的部分放在了腳本中完成,代碼如下:
setprop ctl.start ifconfig_test
#wait for the service until it stops
ret=1
while [ $ret -ne 0 ]
do
getprop | grep "$ENABLE_MAPPER_SRV" | grep stopped
ret=$?
done
通過上面 4 個步驟, Android 應用程序就獲得了 root 許可權,更具體的說,是在執行我們需要執行的命令時臨時獲得了 root 許可權。
轉載僅供參考,版權屬於原作者。祝你愉快,滿意請採納哦
⑦ 如何使Android應用程序獲得root許可權
一般來說, Android 下的應用程序可以逗直接地得到的最大的許可權為 system ,但是如果我們需要在程序中執行某些需要 root 許可權的命令,如 ifconfig 等,就需要 root 許可權了。按照 Simon 的文章中提到的,應用程序有以下兩種辦法臨時獲得 root 許可權:
1) 實現一個 init 實現一個 Service ,來幫助 Android 應用程序執行 root 許可權的命令。
2) 實現一個虛擬設備,這個設備幫助 Android 應用程序執行 root 許可權的命令。
第二種辦法我這里沒有嘗試,暫時也不會。這里講講我在實現第一種辦法的過程和遇到的一些問題。
1. 將我們要執行的命令寫成腳本,或者可執行程序。
下面是我的腳本 ifconfig_test.sh :
# ! /system/bin/sh
ifconfig
注意: 腳本的第一行必須為 # ! /system/bin/sh ,否則無法執行,通過 dmesg 可以查看到信息內容為 cannot execve ./ifconfig_test.sh: Exec format error
也可以採用 C/C++ 編寫需要執行的命令或者程序,並在編譯 image 的時候編譯成可執行程序。
2. 在 init.rc 中注冊 service
Android 中的 service 需要在 init.rc 中注冊, Init.rc 中定義的 Service 將會被 init 進程創建,這樣將可以獲得 root 許可權。當得到相應的通知(通過屬性設置)後, init 進程會啟動該 service 。
本文中注冊的內容如下:
service ifconfig_test /system/etc/ifconfig_test.sh
oneshot
disabled
其中, oneshot 表示程序退出後不再重新啟動, disabled 表示不在系統啟動時啟動。
注意: 這里 service name 不能超過 16 個字元。我之前的 service name 由於定義的比較長, 18 個字元,設置屬性通知 service 啟動後查看 dmesg 可以看到提示: init: no such service 。查看 /system/core/init/parser.c 的源代碼,在 parse_service->valid_name 函數中可以看到如下內容: if (strlen(name) > 16) { return 0; } ,證明 service 的名字的確不能超過 16 個字元。
3. 將 Android 應用程序提升為 system 許可權
既然應用程序可以通過啟動 service 獲得 root 許可權,那麼豈不是很不安全。 Android 考慮到了這點,規定只有 system 許可權的應用程序才能設置屬性,通知 service 啟動。關於提升 system 許可權的文章網上已有很多,這里就不再細說,
4. 在應用程序中添加屬性設置代碼
前面已經提到,對於 Android 來說,應用程序通知 init 啟動 service 是通過設置系統屬性來完成的,具體為設置 System 系統屬性 逗ctl.start地 為 逗ifconfig_test地 ,這樣 Android 系統將會幫我們運行 ifconfig_test 這個 service 了。
對該系統屬性的設置有三種方法,分別對應三種不同的應用程序:
1) Java 代碼
Android 在 Java 庫中提供 System.getProperty 和 System.setProperty 方法, Java 程序可以通過他們來設置和獲得屬性。代碼如下:
SystemProperties.set("ctl.start", "ifconfig_test");
上面的代碼是通知 Android 執行 ifconfig_test service ,如果需要查詢當前 service 執行的狀態,如是否執行完畢,可以通過如下代碼查詢:
ret = SystemProperties.get("init.svc. ifconfig_test ", "");
if(ret != null && ret.equals("stopped"))
{
return true;
}
2) JNI 代碼
當編寫 NDK 的程序時,可以使用 property_get 和 property_set 這兩個 API 來獲得和設置屬性。使用這兩個 API 必須要包含頭文件 cutils/properties.h 和鏈接 libcutil 庫。
3) Shell 腳本
Android 提供了命令行 setprop 和 getprop 來設置和獲取屬性,他們可以在腳本中被使用。
由於我的程序是在 JNI 中調用腳本,腳本中又執行 ifconfig ,因此我將設置屬性的部分放在了腳本中完成,代碼如下:
setprop ctl.start ifconfig_test
#wait for the service until it stops
ret=1
while [ $ret -ne 0 ]
do
getprop | grep "$ENABLE_MAPPER_SRV" | grep stopped
ret=$?
done
通過上面 4 個步驟, Android 應用程序就獲得了 root 許可權,更具體的說,是在執行我們需要執行的命令時臨時獲得了 root 許可權。
轉載僅供參考,版權屬於原作者。祝你愉快,滿意請~~哦
⑧ android 開發板 怎麼調試
第一步:主機nfs服務配置
a. 確定虛擬機IP
[li@] ifconfig //查看eth的IP,一般為192.168.1.*
也可以自己配置虛擬機IP
[li@] ifconfig eth0 192.168.1.123
b. 新建nfs目錄 假設為/home/li/nfs_root
[li@] sudo mkdir /home/li/nfs_root
c. 將開發板根文件系統目錄內容拷貝到nfs目錄,並設置777的許可權 //假設你的utc100_root在目錄/home/li/android2.3 下面
[li@] sudo cp -r /home/li/android2.3/utc100_root/* /home/li/nfs_root
[li@] sudo chmod /home/li/nfs_root 777
d. 配置nfs目錄
添加nfs目錄及配置root的讀寫許可權,修改 /etc/exports,添加內容
/home/li/nfs_root 192.168.1.* (rw,sync,no_root_squash)
第二步: 首先要跑到u-boot命令行(一般是啟動的時候幾秒內按某個鍵)
假設你已經到u-boot命令行(u-boot有哪些命令可以敲help顯示)
a. 設置開發板IP,要與虛擬機同一個網段
u-boot# set ipaddr 192.168.1.122
b. 設置開發板伺服器IP
u-boot# set serverip 192.168.1.123
c. 檢查開發板IP和伺服器IP設置是否正常
u-boot# echo $ipaddr
u-boot# echo $serverip
d. 檢查開發板跟伺服器是否連通,ping主機ip,看結果正確么
u-boot# ping 192.168.1.123
e. 保存現有的內核啟動參數
保險起見,先保存之前的啟動參數
u-boot# echo $bootargs
把顯示的東西復制下來保存,供網路啟動不了的時候,需要設置原來的啟動方式用
設置原先的啟動參數方法為:
u-boot# setenv bootargs 上面復制的內容
u-boot# saveenv
f. 設置內核啟動參數(指定網路啟動的關鍵)
u-boot# setenv bootargs root=/dev/nfs rw nfsroot=192.168.1.123:/home/li/nfs_root init=/init ip=192.168.1.122:192.168.1.123:192.168.1.1:255.255.255.0:utc100:eth0:off console=ttySAC0,115200
一定要保存環境參數
u-boot# saveenv
g. 檢查網路參數設置是否正確,即跟上面設置的一致
u-boot# echo $bootargs
d.重啟開發板
第三步:調試init.rc (以下的操作需要循環操作)
a. 一步一步修改init.rc
b. 保存到nfs_root目錄下
c. 重啟開發板,看啟動情況及日誌
d. 針對log修改init.rc 重復以上的動作