Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux BASH Wikitables获取硬件信息_Linux_Bash_Mediawiki - Fatal编程技术网

Linux BASH Wikitables获取硬件信息

Linux BASH Wikitables获取硬件信息,linux,bash,mediawiki,Linux,Bash,Mediawiki,我正在尝试制作一个简单的脚本,它将读取unix命令并打印这是一个wikitable(类)输出。因此,我可以复制并粘贴输出到wikipage。这对于获取硬件信息和跟踪我们的硬件非常有趣。 但我遇到的问题是,某些硬件有多个ip地址。我想在新的wikitable行中打印每个IP地址。 但是战争没有运气。有人能帮忙吗 ipaddr=$(ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | cut -d: -f2 | awk '{print $1}')

我正在尝试制作一个简单的脚本,它将读取unix命令并打印这是一个wikitable(类)输出。因此,我可以复制并粘贴输出到wikipage。这对于获取硬件信息和跟踪我们的硬件非常有趣。 但我遇到的问题是,某些硬件有多个ip地址。我想在新的wikitable行中打印每个IP地址。 但是战争没有运气。有人能帮忙吗

ipaddr=$(ifconfig  | grep 'inet addr:' | grep -v '127.0.0.1' | cut -d: -f2 | awk '{print $1}')    

echo '{| class="wikitable"  
|+ Storage  
|-'  
printf -- '! %-19s !! %-14s !! %-20s !! %-14s !! %-14s !! %-14s !! %-14s !! %-14s !! %-14s !! %-14s !! %-14s\n' Hostname IP OS CPU Core RAM Name Type Size Used Mountpoint   
echo '|-'   
printf -- '| %-19s || %-14s\b || %-20s || %-14s || %-14s || %-14s || %-14s || %-14s || %-14s || %-14s || %-14s\n' "$HOSTNAME" "$ipaddr" "$os" "$cpu_model" "$cpu_cores" "$total_mem" "$disk_filesystem" "$disk_type" "$disk_size" "$disk_used" "$disk_mount"    
 echo '|}'     

可能是最简单的方法:

echo '{| class="wikitable"  
|+ Storage  
|-'  
printf -- '! %-19s !! %-14s !! %-20s !! %-14s !! %-14s !! %-14s !! %-14s !! %-14s !! %-14s !! %-14s !! %-14s\n' Hostname IP OS CPU Core RAM Name Type Size Used Mountpoint
echo '|-'   

# RELEVANT BIT HERE
for ipaddr in $(LC_ALL=C /sbin/ifconfig  | grep 'inet addr:' | grep -v '127.0.0.1' | cut -d: -f2 | awk '{print $1}'); do
    printf -- '| %-19s || %-14s\b || %-20s || %-14s || %-14s || %-14s || %-14s || %-14s || %-14s || %-14s || %-14s\n' "$HOSTNAME" "$ipaddr" "$os" "$cpu_model" "$cpu_cores" "$total_mem" "$disk_filesystem" "$disk_type" "$disk_size" "$disk_used" "$disk_mount"    
done

echo '|}'
由于
ifconfig | foo | bar
命令的输出是一个以空格分隔的IP地址列表(空格是换行符并不重要),因此您可以简单地在shell循环中遍历它们

我冒昧地将
ifconfig
的区域设置强制为
C
,这样您就不会在非英语区域设置的系统上遇到问题。例如,如果没有它,我将使用
inet-addr:127.0.0.1
而不是
inet-addr:127.0.0.1
,这将混淆后面的
grep
命令


如果这是严格针对Linux的,顺便说一下,您可能希望使用
$(hostname-I)
而不是整个
ifconfig
shebang来巧妙地避开区域设置问题。

一个不错的。。。它就像一个符咒。谢谢你的信息:D