我在这个bash脚本中做错了什么?

用户名

我想知道我的代码有什么问题吗?我想念什么?为什么该IF语句不能正常工作?为什么只显示一个输出?为什么该elif语句不起作用?我尝试托管3个服务器,即www.ee和www.eu以及www.com,然后再次托管它们,以确定它们是否具有IPv6地址或邮件服务器。

编辑:应该这样工作:

1)创建名为nimed.sh的脚本

2)在输入处,主机执行.ee;。欧洲联盟; .com主机。

3)如果主机不存在,请打印"Host not found"

4)主机地址将首先显示找到的相应电子邮件服务器地址。(Use commands sort, awk, tail or head)必须删除主句末尾的点。像这样显示:?.com。(删除点=?.com)

5)如果找不到邮件服务器,则打印 "mail server not found"

6)如果找到了邮件服务器,请使用host命令询问邮件服务器的IP地址。

7)如果邮件服务器获得了IPv6地址,则打印"found IPv6",如果没有,则打印"IPv6 not found"

那就是我需要做的,我被困在第7部分。这是一项通过练习来学习bash的学校练习。它是可选的,不是强制性的。

#!/bin/bash

m1="has address"
m2="has IPv6 address"
m3="mail is handled by 0 ."
m4="found IPv6"
m5="IPv6 not found"
m6="mail server not found"
###########################################################################################################################
host "$(host www.ee | sort | grep "mail is handled" | head -1 | awk '{print $7}')" >> www.all.txt
#first line shows this to www.all.txt
#aspmx.l.google.com has address 108.177.14.26
#aspmx.l.google.com has IPv6 address 2a00:1450:4010:c03::1b
host "$(host www.eu | sort | grep "mail is handled" | head -1 | awk '{print $7}')" >> www.all.txt
#second line shows this to www.all.txt
#mail.www.eu has address 46.105.44.68
host "$(host www.com | sort | grep "mail is handled" | head -1 | awk '{print $7}')" >> www.all.txt
#third line shows this to www.all.txt
#ASPMX.L.GOOGLE.com has address 108.177.14.26
#ASPMX.L.GOOGLE.com has IPv6 address 2a00:1450:4010:c03::1b
file="www.all.txt" #and this file has this in total:
#aspmx.l.google.com has address 108.177.14.26
#aspmx.l.google.com has IPv6 address 2a00:1450:4010:c03::1b
#mail.www.eu has address 46.105.44.68
#ASPMX.L.GOOGLE.com has address 108.177.14.26
#ASPMX.L.GOOGLE.com has IPv6 address 2a00:1450:4010:c03::1b
while read line #now this is where it gets messy. I don't know what to do-
#with line variable
do
    if grep -q "$m2" $file #if string 'has IPv6 address' is in www.all.txt
    then
        awk 'NR==1 {print $1}' #go to line 1 and print the first text
# aspmx.l.google.com
        echo "${m4}" #print 'Found IPv6'
    elif grep -q "$m1" $file; then #else if string 'has address' is in
# www.all.txt then
        awk 'NR==2 {print $1}' #go to line 2 and print the first text
        echo "${m5}" #print 'IPv6 not found'
    elif grep -q "$m3" $file; then #if string 'mail is handled by 0 .'
#is in www.all.txt then
        echo "${m6}" #print 'mail server does not exist'
    else #if none of the above was correct then
        echo "${m6}" #mail server does not exist and
        echo "${m5}" #IPv6 not found
    fi #end the if-elif-else statement
done < $file #end the while loop

它创建的文件:

kristen@kristen-virtual-machine:~/Desktop$ ./nimed.sh
aspmx.l.google.com
found IPv6
kristen@kristen-virtual-machine:~/Desktop$ ls
koopia.sh  nimed.sh  TEST.sh  www.all.txt
kristen@kristen-virtual-machine:~/Desktop$ cat www.all.txt 
aspmx.l.google.com has address 64.233.161.26
aspmx.l.google.com has IPv6 address 2a00:1450:4010:c0e::1b
mail.www.eu has address 46.105.44.68
ASPMX.L.GOOGLE.com has address 64.233.161.26
ASPMX.L.GOOGLE.com has IPv6 address 2a00:1450:4010:c0e::1b
kristen@kristen-virtual-machine:~/Desktop$

测试1:成功

Correct program output
--- Input ---

 www.ee


--- Program output ---

aspmx.l.google.com
found IPv6


--- Expected output (text)---

aspmx.l.google.com
found IPv6

测试2:失败

Incorrect program output
--- Input ---

 www.eu


--- Program output ---

aspmx.l.google.com
Found IPv6


--- Expected output (text)---

mail.www.eu
Didn't find IPv6
用户名

有一阵子,我开始工作了。我犯了一个严重错误,没有正确阅读文字。好吧,当我发现需要使用read:D时,这是一项简单的锻炼

这是我的问题的答案:

#!/bin/bash

m1="has address"
m2="has IPv6 address"
m3="mail is handled by 0 ."
m4="on IPv6"
m5="ei ole IPv6"
m6="mailiserverit pole"
m7="NXDOMAIN"
f="www.all.txt"
read -p "Sisesta host: " hostname
host $hostname | sort > $f
if grep -q "$m3" $f; then
        echo "$m6"
        echo "$m5"
elif grep -q "$m2" $f; then
        awk 'NR==3 {print $7}' $f
        echo "$m4"
elif host "$(host $hostname | sed 's/\.$//' | tail -1 | awk '{print $7}')" > www.all.txt && grep -q "mx-eu.mail.am0.yahoodns.net" $f; then
        awk 'NR==1 {print $1}' $f
        echo "$m5"
elif grep -q "$m7" $f; then
        echo "hosti pole"
else
        host "$(host $hostname | sed 's/\.$//' | sort | awk 'NR==2 {print $7}')" > $f
                if grep -q "$m2" $f; then
                        awk 'NR==1 {print $1}' $f
                        echo "$m4"
                elif grep -q "$m1" $f; then
                        awk 'NR==1 {print $1}' $f
                        echo "$m5"
fi
        fi

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我在这个 IF 中做错了什么?

来自分类Dev

在这个异步示例中我做错了什么吗?

来自分类Dev

我在这个 Monogame 课程中做错了什么?

来自分类Dev

我在这个 Angular HTTP 请求中做错了什么?

来自分类Dev

我在这个 json 请求中做错了什么?

来自分类Dev

错误 - 我在这个 sql 查询中做错了什么?

来自分类Dev

我对这个bash变量做错了什么?

来自分类Dev

我在这里用这个SigninController做错了什么

来自分类Dev

我在这个类构造函数上做错了什么?

来自分类Dev

我在这个循环中做错了什么?

来自分类Dev

我在这个使用函数的 Python 程序中做错了什么?

来自分类Dev

我在这里做错了什么?~~ Python中的Tkinter

来自分类Dev

c中的链表(我在这里做错了什么?)

来自分类Dev

我在这里做错了什么

来自分类Dev

我在上传脚本中做错了什么

来自分类Dev

javascript原型,我在这里做错了什么

来自分类Dev

PriorityQueue.siftUpComparable?我在这里做错了什么?

来自分类Dev

Python 3:我在这里做错了什么?

来自分类Dev

getSource()-我在这里做错了什么?

来自分类Dev

Python3-我在这里做错了什么?

来自分类Dev

Python3-我在这里做错了什么?

来自分类Dev

好奇的 javascript 解析,只返回偶数节点。:我在这段代码中做错了什么?

来自分类Dev

实施传单绘制时我做错了什么。如何在这个特定示例中使用 WFST?

来自分类Dev

我如何附加这个文件,我做错了什么?

来自分类Dev

¿我做错了什么?

来自分类Dev

我在大学课程中做错了什么

来自分类Dev

我在divs表中做错了什么

来自分类Dev

我用这个lcm python代码做错了什么?

来自分类Dev

这个 MERGE / INSERT 查询我做错了什么?

Related 相关文章

热门标签

归档