【发布时间】:2014-07-24 17:09:19
【问题描述】:
我有一个脚本,它扫描一个 IP 地址以查找一个开放的 FTP 端口,然后将该 IP 地址输入到 MySQL 数据库中。但是,在运行脚本时,我收到以下消息:
“第 1 行的错误 1064 (42000):您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 '192.168.1.104 附近使用的正确语法 在第 1 行插入用户 (ip) VALUES (192.168.1.104)'
我已设置数据库并将其命名为“nmapscans”,其中包含名为“users”的表和数据类型为“int(20)”的字段名称“ip”
这是我不完整的脚本:
#!/bin/bash
ipadd=`ifconfig wlan0 | awk '/inet / {print $2}' | cut -d: -f2`
nmap -sV $ipadd -p 21 -oG ftp1 ; cat ftp1 | grep closed > ftp2
cut -d: -f2 ftp2 | cut -d"(" -f1 > ftp3
#cat ftp3
function checkDatabase {
RESULT=`mysql -u root -pQwerty17 --skip-column-names -e "SHOW DATABASES LIKE 'nmapscans'"`
if [ "$RESULT" == "nmapscans" ]; then
echo "Database exists"
else
echo "Database does not exist"
fi
}
checkDatabase && echo $?
echo "INSERT INTO users (ip) VALUES ("100");" | mysql -uroot -pQwerty17 nmapscans;
function input_data {
#if [[ checkDatabase ]]
inputfile="ftp3"
cat $inputfile | while read ip; do
echo "$ip"
echo "INSERT INTO users (ip) VALUES ("$ip");"
done | mysql -uroot -pQwerty17 nmapscans;
#fi
}
input_data && echo $?
if [[ input_data == 0 ]]
then
echo "it worked" && rm ftp1 ftp2 ftp3
else
echo "it failed"
fi
exit
【问题讨论】:
-
您在 mysql 插入语句之间回显 IP。
Mysql不知道该怎么办。只需删除echo "$ip"行。 -
@FlorinStingaciu 太棒了!那行得通。但是,仍然让我感到困惑的是,当我运行脚本时,input_data 函数的状态代码为 0,但脚本末尾的 if 语句的输出显示“失败”
-
请看我的回答。