如何使用不具有-e
選項的netcat版本模擬netcat -e
?仿真netcat -e
我需要遠程觸發一個命令。我可以用netcat的做到這一點 - 不-e
:
#/斌/慶典
的netcat -l 8080; myCommand.sh
那會做的伎倆,但我想回復取決於命令的成功或失敗的客戶端(有一種REST的 - 類似的界面)。
我該怎麼做?
謝謝!
如何使用不具有-e
選項的netcat版本模擬netcat -e
?仿真netcat -e
我需要遠程觸發一個命令。我可以用netcat的做到這一點 - 不-e
:
#/斌/慶典
的netcat -l 8080; myCommand.sh
那會做的伎倆,但我想回復取決於命令的成功或失敗的客戶端(有一種REST的 - 類似的界面)。
我該怎麼做?
謝謝!
最好的方法是切換到支持它的netcat版本。在Debian/Ubuntu的IIRC正確,您應該netcat的使用傳統,不NETCAT OpenBSD的:
sudo apt-get install netcat-traditional # netcat-openbsd
您必須指定明確地定義你需要哪個版本的選項:
nc.traditional server 6767 -e myscript.sh
nc.openbsd -l 6767
(注期權使用的細微差異)。正如你所看到的(下面),nc.traditional可以作爲獨立的二進制文件運行,這取決於libc和linux本身,所以如果你沒有安裝權限,你應該可以在的某個地方放置獨立的二進制文件當然是有exec
權限的文件系統),然後運行它像
/home/user/bin/mynetcat server 6767 -e myscript.sh
HTH
$ ldd `which nc.{traditional,openbsd}`
/bin/nc.traditional:
linux-gate.so.1 => (0xb7888000)
libc.so.6 => /lib/libc.so.6 (0xb7709000)
/lib/ld-linux.so.2 (0xb7889000)
/bin/nc.openbsd:
linux-gate.so.1 => (0xb77d0000)
libglib-2.0.so.0 => /lib/libglib-2.0.so.0 (0xb76df000)
libc.so.6 => /lib/libc.so.6 (0xb7582000)
libpcre.so.3 => /lib/libpcre.so.3 (0xb754c000)
/lib/ld-linux.so.2 (0xb77d1000)
備案,那不是什麼'靜態鏈接'的意思。 – Random832 2011-06-08 00:17:25
是的,我知道,這就是爲什麼我拼寫出來的依賴:)什麼將_you_稱之爲? '部分靜態鏈接','大部分靜態鏈接','獨立二進制'?嗯...,也許後者不會那麼糟糕! **編輯**,thx – sehe 2011-06-08 06:26:14
謝謝,但我不喜歡用「隨機二進制」分發我的小腳本的想法。另外我需要在開發機器(32位)上測試它,並在臨時服務器上部署(64位)。 – user787935 2011-06-08 12:17:01
mkfifo foo
nc -lk 2600 0<foo | /bin/bash 1>foo
然後,只需NC SE rvername 2600和./script.sh
用ctrl + c殺死客戶端
你能用這個命名管道嗎? – Lynch 2011-07-04 05:04:27