yuu_nkjm blog
2011-01-15(Sat) 編集
[bash][Linux] シェルスクリプトが実行できない(/bin/bash^M: bad interpreter: そのようなファイルやディレクトリはありません)
bash: ./hoge.sh: /bin/bash^M: bad interpreter: そのようなファイルやディレクトリはありません
すごーく簡単なスクリプトが実行できないとき,ファイル内の改行コードを間違えていることがある.
Windows上でshファイルを作成,sambaを使ってコピーとかすると起こりがち.昔はよくはまった.今となってみれば「^M」(CR, \r, 復帰)がついてるようなエラーが出てるからすぐ気づけるはずなのに….
似たようなのでよくやったのは,sambaで操作したときにファイルのパーミッションが変わってしまって,スクリプトの実行権限が消えていたとかか.
オプションの%pとか,ASCII制御文字の^Mとかってググりにくいんですよね.
2013-01-15(Tue) 編集
[RHEL][iptables][Linux] iptablesの設定
/etc/sysconfig/iptablesにiptablesの設定が書かれている.「"/etc/sysconfig/iptables"を直接編集することは推奨されない」と/etc/sysconfig/iptablesに書かれていたが,じゃあどうしたらいいのってのは調べてない.system-config-securitylevelってコマンドがあるんかな.
# Firewall configuration written by system-config-securitylevel # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -s 1x.xxx.0.0/255.224.0.0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -s 1xx.54.0.0/255.255.0.0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -s 1xx.3.0.0/255.255.0.0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
ちなみに今回は,"-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT"を追加した."/etc/init.d/iptables reload"(もしくはrestart)として,設定を有効にする."/sbin/iptables --list"というコマンドでiptablesのルールの状態を確認すると"ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:smtp"というルールが増えていることが分かる.