我在这里试图找出一种方法让这个小脚本正常工作。
该cat
命令应该给我 1 或 0:
if [cat /sys/block/sda/queue/rotational = 0 ]; then
echo "SSD"
else
echo "HDD"
fi
Run Code Online (Sandbox Code Playgroud)
cat
我用谷歌搜索了一下,在某人的帖子中找到了该命令。
我试图让这个脚本打印驱动器是sda
SSD 还是 HDD。我可以通过将等号后面的值从 0 更改为 1 来测试它是否有效,并且应该以其他方式读取它。
我还希望它只打印“SSD 或 HDD”,而不显示其他内容。
我查看了如何在 SO 上使用 shell 计算字符串中的单词数的问题,它解释了如何计算变量内的单词数。
但这在我的变量中只计算一个单词,所以我不知道如何解决它。
我有以下变量:
vmfarm1=(host1.com host2.com host3.com host4.com )
maximus=(host11.com host 12.com host 13.com)
firefly=(host5.com)
Run Code Online (Sandbox Code Playgroud)
我需要找到一种方法将所有主机名计数为变量内的数字。
在此之后,被计算在内的数字必须用作该行中的变量。
我试过了:
echo "$input" | wc -w
printf ' \n|/4.vmfarm1 ' >> textfile.txt
Run Code Online (Sandbox Code Playgroud)
我必须4
自己将上述内容写入数字,并且需要自动完成,这就是为什么我需要一个变量。
我知道我可以nmap
用来查看特定机器上打开了哪些端口。但我需要的是一种从主机端本身获取它的方法。
目前,如果我nmap
在我的一台机器上使用检查另一台机器,我会得到一个例子:
smb:~# nmap 192.168.1.4
PORT STATE SERVICE
25/tcp open smtp
80/tcp open http
113/tcp closed ident
143/tcp open imap
443/tcp open https
465/tcp open smtps
587/tcp open submission
993/tcp open imaps
Run Code Online (Sandbox Code Playgroud)
有没有办法在主机上做到这一点?不是从远程机器到特定主机。
我知道我能做到
nmap localhost
Run Code Online (Sandbox Code Playgroud)
但这不是我想要做的,因为我会将命令放入通过所有机器的脚本中。
编辑:
这样,nmap
显示22 5000 5001 5432 6002 7103 7106 7201 9200
但lsof command
显示给我22 5000 5001 5432 5601 6002 7102 7103 7104 7105 7106 7107 7108 7109 7110 7111 7112 7201 7210 11211 27017
目前,我正在努力让 2 个代码在我的 bash 脚本中工作。它们都单独工作,但是一旦它们都在代码中,它们就不会。
var=$(cat /sys/block/vda/queue/rotational 2>/dev/null || cat /sys/block/sda/queue/rotational 2>/dev/null)
dtype='nil'
if [ $var = 0 ]; then
dtype=' SSD '
elif [ $var = 1 ]; then
dtype=' HDD '
fi
var1=$(lsmod | grep kvm | awk 'NR==1{print $3}' 2>/dev/null)
vtype = 'no'
if [ $var1 = 0 ]; then
vtype=' no '
else
vtype = 'yes'
fi
printf '$dtype' '$vtype'
echo $dtype $vtype
Run Code Online (Sandbox Code Playgroud)
第一个变量var
应该保存旋转文件的值。Asks0
适用于 SSD,1
适用于 HDD。
第二个变量var1
检查您的机器中是否存在虚拟化。如果它持有的数字是0 …
我正在努力找出一种方法来总结一行数字。
我有以下代码。
lshw -class disk -class storage | grep size: | cut -d "(" -f2 | cut -d ")" -f1
Run Code Online (Sandbox Code Playgroud)
这给了我结果
2TB
2TB
2TB
2TB
2TB
2TB
Run Code Online (Sandbox Code Playgroud)
在我的另一台机器上:
500GB
1TB
1TB
Run Code Online (Sandbox Code Playgroud)
有没有办法总结这些?我需要保留 GB 或 TB
我完全没问题,它在 GB 中被说出来了,或者只有在有 2 个以上的结果时才将它们相加?我有多台机器,我应该在其中运行此命令。其中一些有 5 个硬盘驱动器,有些只有 1 个。