我有一個腳本可以掃描打開的FTP端口的IP地址,然後將該IP地址輸入到MySQL數據庫中。但是,在運行腳本時,我收到以下消息:在Bash腳本中插入Linux命令輸出到MySQL
「第1行中出現錯誤1064(42000):您的SQL語法出錯;請查看與您的MySQL服務器版本對應的手冊,以獲取正確的語法在
我已經建立了數據庫,並把它命名爲‘nmapscans’與命名錶‘用戶’和現場1" 號線使用近「192.168.1.104 INSERT INTO用戶(IP)VALUES(192.168.1.104)」名稱 'IP' 是數據類型爲 'INT(20)'
這是我未完成的腳本:
#!/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
你呼應IP在你的mysql插入statments之間。 'Mysql'不知道該怎麼做。只要刪除'回聲'$ ip「 '線。 –
@FlorinStingaciu太棒了!那工作。然而,仍然令我困惑的是,當我運行腳本時,input_data函數的狀態碼是0,但腳本末尾的if語句的輸出顯示'失敗' – UmairK
請參閱我的答案。 –