Ubuntu 20.04では、fall2banを使用してIPアドレスを禁止および禁止解除するためのbashエイリアス(またはスクリプト)を作成しています。 飼育剤通事論慣れています。禁止解除IP アドレスは次のとおりです。 fail2ban-client set YOURJAILNAMEHERE unbanip IPADDRESSHERE
そして通事論私は慣れている禁止するIP アドレスは次のとおりです。 fail2ban-client set YOURJAILNAMEHERE banip IPADDRESSHERE
だから私の bashエイリアス構文~のため禁止令を解除IP アドレスは次のとおりです。 alias unbanip='sudo fail2ban-client set YOURJAILNAMEHERE unbanip'
そして私の bashエイリアス構文~のため禁止するIP アドレスは次のとおりです。 alias banip='sudo fail2ban-client set YOURJAILNAMEHERE banip'
次に、実際強く打つニックネーム~のため禁止令を解除IP アドレスは次のとおりです。 alias unbanip='sudo fail2ban-client set sshd unbanip'
そして実際強く打つニックネーム構文は次のとおりです。禁止するIP アドレスは次のとおりです。 alias banip='sudo fail2ban-client set sshd banip'
エイリアスを使用して生成された実際のbashコマンドは次のとおりです。 # Unban a specific IP
unbanip 123.456.78.90
# Ban a specific IP
banip 123.456.78.90
これらすべての問題は、次の理由で指定されたIPを直接禁止する実際のコマンドまたはbashエイリアスを実際に作成できないことです。 1)ブロックを解除するときは、まず禁止IPの刑務所を見つけて、bashコマンドに刑務所を入力してください。 2)ブロックするには、すべての刑務所のIPをブロックするには、1つのコマンドですべての刑務所を指定する必要があります。 私がしたいことは 1)すべての刑務所でIPを自動的に禁止するIP禁止命令(刑務所を指定せず)を提案します。 2)IP禁止が属する刑務所を見つける必要なしにIP禁止を解除するコマンドを実行します。デフォルトでは、unban コマンドは特定の IP が属する刑務所を検索し、自動的に構文の YOURJAILNAMEHERE 部分に入力して 1 つ以上の刑務所を検索します。 bash技術を持っている人なら誰でもこのタスクを実行するためのコマンド(対応するbashエイリアスを含む)またはスクリプトを作成できますか?どんな助けでも大変感謝します!
folder1スペースを含むパス変数があります。 TEST=path/with\ space/to/folder1/
すべてのファイルをリンクしたいがエラーが発生しますfolder1。cat cat "$TEST"* > test
cat: path/with: No such file or directory
cat: 'space/to/folder1/*': No such file or directory
これを自分で試してみるとうまくcat path/with\ space/to/folder1/ > testいきます。 また、二重引用符を使用することもできます。 TEST="path/with space/to/folder1/"
cat "$TEST" > total
しかし、パスを使ってこれを正しく実行するには\ ?
私はLinuxに関しては初心者です。 先生は、さまざまなパッケージ(MYSQLのみ、PHP、またはすべてのパッケージなど)をインストールするオプションとともに、LAMPサーバーをインストールするスクリプトを生成するように指定しました。 合格後に修正されたコードは次のとおりです。https://shellcheck.net/、 #!/bin/bash
function apache {
sudo apt update
sudo apt install apache2
#ja deaktivizē apache2 serveri un izmetas errors, kad mēģina to aktivizēt:
#sudo echo "deb http://archive.ubuntu.com/ubuntu trusty main universe restricted multiverse" > /etc/apt/sources.list
#sudo apt-get update
#sudo apt-get purge apache2*
#sudo apt-get install apache2
#sudo service apache2 start
#sudo service apache2 status #Pārbaudīt vai viss strādā pareizi
sudo ufw app list
sudo ufw allow in "Apache" #Šis profils atver tikai 80. portu (parasta, nešifrēta tīmekļa trafika).
sudo ufw enable #aktivizē ugunsmūri
sudo ufw status #pārbauda vai 80 portam ir atļauts iziet caur ugunsmūri
echo -e "Lai pārbaudītu vai viss sanāca, ieejiet jūsu pārlūkprogramma un ierakstiet šo http://jusu_servera_IP, Ip adresi var iegūt ar komandu hostname -I, tālāk ir dota jūsu IP adrese:"
hostname -I #parādīs IP adresi(pirmā)
echo "Ievadiet to konsolē, lai to varētu izmantot vēlāk" #write it in console to use it later
read -r ip_address
echo "Ievadi savu domēna vārdu" #input your domain name
read -r domain
sudo mkdir /var/www/"$domain"
sudo chown -R "$USER":"$USER" /var/www/"$domain"
cd /etc/apache2/sites-available/
echo "
ServerName $domain
ServerAlias www.$domain
ServerAdmin webmaster@localhost
DocumentRoot /var/www/$domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
" > "$domain".conf
echo "Direktorija $domain un fails $domain.conf ir izveidoti"
sudo a2ensite "$domain"
sudo a2dissite 000-default
sudo systemctl reload apache2
sudo apache2ctl configtest
sudo systemctl reload apache2
cd /var/www/"$domain"
echo "
$domain majaslapa
Sveiki pasaule!
Si ir galvena lapa jusu majaslapai $domain.
" > index.html
#xdg-open http://localhost #lietojot operu met brīdinājumus
echo "Ierakstiet pārlūkprogramma http://localhost vai http://$ip_address"
}
function remove_apache {
#sudo service apache2 stop
sudo apt-get purge apache2 apache2-utils apache2.2-bin apache2-common
sudo apt-get autoremove --purge
echo -e "Vai jūs gribat arī noņemt apache izveidotās direktorijas (ja/ne) ?"
read -r manual
while [[ "$manual" != "ja" && "$manual" != "ne" ]]; do #salidzina && = AND
echo "Jums jaievada ja vai ne, lai turpinātu."
read -r manual
done
if [ "$manual" = ja ]; then
echo "Lai izdzēstu direktorijas, kuras jūs gribat izdzēst ar komandu sudo rm -Rf (piemēram, sudo rm -Rf /etc/apache2 /usr/lib/apache 2), tālāk būs dotas jūsu direktorijas:(ja tomēr nevēlaties izdzēst šīs direktorijas, ierakstiet jebko citu)"
whereis apache2
read -r remove_direktorijas
$remove_direktorijas
elif [ "$manual" = ne ]; then
echo -e "Apache2 ir atinstalēta."
fi
}
function mysql {
sudo apt install mysql-server
echo -e "Tālāk varēs izvēlēties vai instalēt mysql drošību ar VALIDATE PASSWORD PLUGIN vai bez(spiežot jebkuru citu pogu izņemot y vai Y)"
echo -e "Tālāk prasīs MYsql administrātora paroli vienalga vai jūs VALIDATE PASSWORD PLUGIN instalējāt vai nē. Un citas lietas, kas būs aprakstītas tālāk."
sudo mysql_secure_installation
echo -e "Lai izietu no MySQL konsoles rakstiet exit"
sudo mysql
}
function remove_mysql {
sudo apt-get remove --purge mysql*
}
#function php {
#sudo apt install php libapache2-mod-php php-mysql | man ieķērās instalācija(loop) ja liku funkcijā šo
#sudo systemctl restart apache2
#php -v
#}
function remove_php {
sudo apt-get purge php7.*
sudo apt-get autoclean
sudo apt-get autoremove
}
function phpmyadmin {
sudo apt update
echo -e "Parādīsies uzvedne, izvelāties apache2(jānospiež taustiņš space un enter)"
echo -e "Kad tiek vaicāts, vai datu bāzes iestatīšanai jāizmanto dbconfig-common, atlasiet Jā"
sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl
sudo phpenmod mbstring
sudo systemctl restart apache2
#xdg-open http://localhost/phpmyadmin
echo "Ierakstiet pārlūkprogramma http://localhost/phpmyadmin vai http://$ip_address/phpmyadmin"
}
function remove_phpmyadmin {
sudo apt-get remove phpmyadmin
sudo apt-get purge phpmyadmin
sudo apt-get autoremove
}
while true
do
echo "1. Instalēt Apache"
echo "2. Instalēt MySQL"
echo "3. Instalēt PHP"
echo "4. Instalēt phpMyAdmin"
echo "5. Instalēt LAMP(Visu)"
echo "6. Atinstalēt Apache"
echo "7. Atnstalēt MySQL"
echo "8. Atnstalēt PHP"
echo "9. Atinstalēt phpMyAdmin"
echo "10. Atinstalēt LAMP(Visu)"
echo "0. Iziet"
read -r INPUT
if [ "$INPUT" -eq 1 ]; then
apache
elif [ "$INPUT" -eq 2 ]; then
mysql
elif [ "$INPUT" -eq 3 ]; then
php
elif [ "$INPUT" -eq 4 ]; then
phpmyadmin
elif [ "$INPUT" -eq 5 ]; then
apache
mysql
sudo apt install php libapache2-mod-php php-mysql
sudo systemctl restart apache2
php -v
phpmyadmin
elif [ "$INPUT" -eq 6 ]; then
remove_apache
elif [ "$INPUT" -eq 7 ]; then
remove_mysql
elif [ "$INPUT" -eq 8 ]; then
remove_php
elif [ "$INPUT" -eq 9 ]; then
remove_phpmyadmin
elif [ "$INPUT" -eq 10 ]; then
remove_apache
remove_mysql
remove_php
remove_phpmyadmin
elif [ "$INPUT" -eq 0 ]; then
exit
fi
done
エラーは私のルートパーティションを埋めるsyslogファイルを生成しているので(shellcheck.netには記載されていません)、この問題を解決するにはどうすればよいですか? システムログメッセージ: https://i.stack.imgur.com/bjVzH.jpg これらのメッセージは、単にその行の行を記述するために必要な整数式です。 elif [ "$INPUT" -eq 5 ]; then
AdminBeeが提案したように「読み取り」の後に挿入しecho "$INPUT" てスクリプトを実行した後、ターミナルでEnterキーを押すと、次の結果が表示されます。 ./lamp: line 161: [: : integer expression expected
./lamp: line 163: [: : integer expression expected
./lamp: line 165: [: : integer expression expected
./lamp: line 167: [: : integer expression expected
./lamp: line 169: [: : integer expression expected
./lamp: line 176: [: : integer expression expected
./lamp: line 178: [: : integer expression expected
./lamp: line 180: [: : integer expression expected
./lamp: line 182: [: : integer expression expected
./lamp: line 184: [: : integer expression expected
./lamp: line 189: [: : integer expression expected
#!/bin/sh
echo -n "Enter the raspberry ip address you want to connect:"
read Rasp_id
sshpass -p "the@Donut" ssh -t -X -oStrictHostKeyChecking=no pi@$Rasp_id << E2
echo -e "Enter the case you want to echo\n 1.1 a \n 2.1 b"
read option
case "\$option" in
1)
echo "a"
;;
2)
echo "b"
;;
esac
E2
SSHセッションを開始してからリモートシステムでいくつかの修正を実行するスクリプトを作成していますが、次の構文エラーが発生します。 bash: line 3: syntax error near unexpected token `)'
bash: line 3: ` 1)'
./myscript私はいくつかのコマンドを呼び出したい()などの独自のスクリプトを書いています。だから、次のようにシェルスクリプトにコマンドを挿入する方法を学びたいと思います。 #!/bin/bash
set -x
if test 1 -eq $1; then
echo "Correct answer."
fi
ここに別のコマンドを注入できますか?このようなコマンドを挿入しようとすると、./myscript.sh "1 && echo Yes"次の結果が表示されます。 + test 1 -eq 1 '&&' echo Yes
./myscript.sh: line 7: test: too many arguments
ここに何かを注入するためにいくつかの他の方法も試しましたが、方法が見つかりませんでした。