我正在尝试使用bash在Debian和Ubuntu系统上获取以太网或wifi适配器的IP地址。我可以使用ifconfig可靠地获取它,但它需要安装net-tools,现在已经弃用但它确实有效。
showip=$(ifconfig eth0 | awk -F"[: ]+" '/inet addr:/ {print $4}')
我使用ip route制作了一些东西,但它不能始终如一地工作,有时输出的行根据发行版和版本而不同
MAINIP=$(ip route | awk 'NR==3{print $9}')
GATEWAYIP=$(ip route | awk 'NR==1{print $3}')
SUBNET=$(ip route | awk 'NR==2{print $1}')
有没有办法使用正则表达式grep或awk来确保它有效?
答案 0 :(得分:5)
你可以这样做:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as! UITableViewCell
var btn : UIButton = cell.contentView.subviews[0] as! UIButton
btn.addTarget(<#target: AnyObject?#>, action: <#Selector#>, forControlEvents: <#UIControlEvents#>)
return cell
}
对于子网,您可以:
MAINIP=$(ip addr show dev eth0 | grep "inet" | awk 'NR==1{print $2}' | cut -d'/' -f 1)
对于GW:
SUBNET=$(ip route | grep "src $MAINIP" | awk '{print $1}')
答案 1 :(得分:0)
找出哪些适用于无线连接,而不仅仅是eth0(谢谢@ D.K。),只有MAINIP的调整。可能会有一种更好的方式或我忽略的东西。
MAINIP=$(ip route | grep src | awk '{print $9}')
GATEWAYIP=$(ip route | grep default | awk '{print $3}')
SUBNET=$(ip route | grep proto | grep -v default | awk '{print $1}')
SUBNET没有双重grep
SUBNET=$(ip route | awk '/proto/ && !/default/ {print $1}')