Linux
本地主機上的 Netcat“連接被拒絕”
我試圖從
netcat
一個 php 文件開始的連接中獲取一個值,但它死於:localhost [127.0.0.1] 2000 (?) : Connection refused
我不知道為什麼,但是如果我以 apache 使用者(www-data)的身份 ssh 它會很好。這就是我所做的:
- 開始一個無限循環服務一個有一點延遲的日期:
$ (while true; do nc -l -p 2000 -c "sleep 5; date"; done)&
- 檢查是否工作:
$ su www-data $ nc localhost 2000 Fri Oct 16 21:33:20 COT 2009
- 創建 /var/www/test.php 如下:
<?php exec('nc localhost 2000>>/var/www/dates.txt 2>>/var/www/errors.txt &'); ?>
- 在瀏覽器上執行它:
http://myserver.com/test.php
- 最後看看兩個 txt,日期是空的(與 #2 中的響應不同)並且錯誤有“連接被拒絕”錯誤。
該伺服器是一個執行 Ubuntu Server 9.04 的 LAMP 集群,帶有 DRBD 和 Heartbeat。
讓我發瘋的是,這個 test.php 在我的筆記型電腦(Ubuntu Desktop 9.04 上的 LAMP)上執行良好,並且伺服器似乎已經打開並監聽了埠:
$ netstat -ntpl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:4743 0.0.0.0:* LISTEN 2326/openhpid tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 3364/mysqld tcp 0 0 0.0.0.0:2000 0.0.0.0:* LISTEN 9510/nc tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3470/apache2 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2320/sshd tcp 0 0 127.0.0.1:3551 0.0.0.0:* LISTEN 2354/apcupsd tcp6 0 0 :::22 :::* LISTEN 2320/sshd
這是我真正想要存檔的內容:圖表(我還沒有足夠的點數來插入圖像,哈哈)
- 當伺服器請求時,將重量值從汽車衡發送到伺服器
- 將原始文本(epson 轉義文本格式)發送到列印機的串口
因此,在客戶端 pc 中不斷執行兩個偵聽
netcat
連接,一個用於獲取權重,另一個用於列印原始文本。
好吧,畢竟這是一個權限問題…修復了使用 visudo 編輯 /etc/sudoers 以添加:
www-data ALL = NOPASSWD: /bin/nc
檢查本地介面是否已啟動。
ip link
應該告訴你。本地介面可能已關閉,不太可能,但有可能。
你想看到類似的東西:
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
另外,看看ip route。看看那裡有沒有絕對瘋狂的事情。