小编Har*_*rry的帖子

如何让 netcat 使用现有的 HTTP 代理

我可以通过直接点击我的网络服务器来访问一个网页,如下所示:

$ echo "GET /sample" | nc web-server 80
This is contents of /sample...
$
Run Code Online (Sandbox Code Playgroud)

现在,我希望 netcat 通过 Squid HTTP 代理(侦听端口 3128),就像我可以通过其代理首选项配置我的 Firefox 浏览器并让它通过 HTTP 代理运行一样。

我尝试了以下方法,但没有奏效:

$ echo "GET /sample" | nc -x squid-proxy:3128 web-server 80
    <Seemed to be blocked FOREVER on input, so I killed it.>
<Ctrl-C>
$
Run Code Online (Sandbox Code Playgroud)

注意:我使用的是 RHEL 5.3 版本的 netcat,它具有以下选项:

$ nc --help
nc: invalid option -- -
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
  [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
  [-x proxy_address[:port]] …
Run Code Online (Sandbox Code Playgroud)

proxy squid netcat

12
推荐指数
1
解决办法
5万
查看次数

是否有任何命令行通用 HTTP 代理(如 Squid)?

我可以轻松地使用 Netcat(或 Socat)来捕获我的浏览器和特定主机:端口之间的流量。

但是对于 Linux,是否存在类似 Squid 的 HTTP 代理的任何命令行对应物,我可以使用它来捕获我的 HTTP 客户端(浏览器或命令行程序)和任意主机:端口之间的流量?

command-line proxy http squid

10
推荐指数
2
解决办法
1万
查看次数

动态文件内容生成:通过“流程执行”满足“文件打开”

我有一个只读文件,F.

程序,P的,我不是作者,需要读取F

我希望 的内容F来自另一个“生成器”程序,G每当P尝试读取F(假设F为普通文件)而不是更早时。

我尝试执行以下操作:

$ mkfifo /well-known/path/to/F    # line #1
$ G > /well-known/path/to/F       # line #2
Run Code Online (Sandbox Code Playgroud)

现在,当P启动并尝试读取时F,它似乎能够G像我希望的那样读取由生成的输出。但是,它只能执行一次,因为 G 毕竟只能运行一次!所以,如果P在执行过程中需要F再次读取,它最终会阻塞在先进先出!

我的问题是,除了在某种无限循环中将上面的第 2 行括起来之外,还有其他(优雅的)替代方案吗?

我希望的是,某种方式将“钩子”程序注册到文件打开系统调用中,这样文件打开将导致钩子程序的启动和文件读取钩程序输出。显然这里的假设是:读取将从文件开始到文件结束顺序发生,并且永远不会随机查找。

linux process files

7
推荐指数
1
解决办法
1939
查看次数

如何在 sed 替换和删除命令中使用 NUL 字符作为分隔符?

这是我在打算替换/path/to/a/path/to/busingNUL作为分隔符/定界符时尝试的方法:

$ cat pathsList| sed -r -e 's\0/path/to/a\0/path/to/b\0g'
sed: -e expression #1, char 27: number option to `s' command may not be zero
Run Code Online (Sandbox Code Playgroud)

我想要使​​用NUL: NUL/是唯一不允许的字符ext4fs,并且/已经被大量用作路径名分隔符。另外,我想避免仅仅为了能够使用而引用和取消引用我的数据sed

如果NUL不能用作分隔符(比方说),我可以接受任何比引用和取消引用我的数据更好的解决方法。

$ sed --version
sed (GNU sed) 4.4
Run Code Online (Sandbox Code Playgroud)

sed null

6
推荐指数
2
解决办法
8115
查看次数

Linux:硬链接到目录是如何工作的?

我知道 Linux 不允许硬链接到目录。我在某处读到,

  1. 这是为了防止文件系统中的无意循环(或图形,而不是更理想的树结构)。

  2. 某些 *nix 系统确实允许 root 用户硬链接到目录。

因此,如果我们在一个这样的系统上(确实允许硬链接到目录)并且如果我们是 root 用户,那么..在删除(硬链接的)目标和它的父母?

a (200)
\-- .  (200)
\-- .. (100)
\-- b  (300)
|   \-- .  (300)
|   \-- .. (200)
|   \-- c  (400)
|       \-- .  (400)
|       \-- .. (300)
|       \-- d  (500)

 <snip>

|
\-- H (400)
Run Code Online (Sandbox Code Playgroud)

(上图中,括号中的数字是inode地址。)

如果a/H是到目录的(尝试的)硬链接a/b/c,则

  1. inode 400 中存储的引用计数应该是多少:2、3 或 4?换句话说,硬链接到目录是否会将目标目录的 inode 的引用计数增加 1 或 2?

  2. 如果我们删除a/b/c,inode 400 中的...条目将继续分别指向有效的 inode …

linux hard-link inode

5
推荐指数
0
解决办法
1428
查看次数

bash:取消“陷阱处理程序调试”的执行

通过执行以下操作,我可以myHandler()bash命令之前执行一个函数:

function myHandler() {
   ...
}
trap 'myHandler' DEBUG
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够BASH_COMMAND根据以下运行时条件继续或中止即将执行的操作myHandler

function myHandler() {
   if ! myCondition ; then
      abort the execution of BASH_COMMAND right here
   fi
   # Proceed with the execution of BASH_COMMAND
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

bash debugging trap

5
推荐指数
1
解决办法
837
查看次数

有什么方法可以用 rpm/yum 数据库注册源代码构建的软件?

当我使用 rpm 或 yum 从二进制包安装软件时,我可以稍后查询元信息 ( rpm -qi PACKAGE, rpm -ql PACKAGE, ...) 并可以卸载它 ( rpm -e PACKAGE)。

但是对于我从源代码构建和安装的软件,我必须永远挂在构建目录上以便以后能够卸载它,因为删除构建目录将使我以后无法卸载该软件!即使您可以永远保留 build 目录,查询元信息也不容易,除非您知道 make 文件的复杂性。

问题:有什么办法可以make install在 rpm/yum 数据库中“注册”正在安装的二进制文件(通常在大多数软件包的步骤中),以便以后轻松卸载和元信息查询?

rpm software-installation

3
推荐指数
1
解决办法
1315
查看次数