Bash 远程运行命令时重复的进度条
当我通过ssh运行包含进度条(如phpunit或wget)的远程命令而不是获取更新的进度条时,我会得到重复的堆栈标准条:Bash 远程运行命令时重复的进度条,bash,ssh,Bash,Ssh,当我通过ssh运行包含进度条(如phpunit或wget)的远程命令而不是获取更新的进度条时,我会得到重复的堆栈标准条: $ ssh user1@server1 some_command ------------------------------- ##----------------------------- ######------------------------- #######------------------------ ###########----------
$ ssh user1@server1 some_command
-------------------------------
##-----------------------------
######-------------------------
#######------------------------
###########--------------------
##############-----------------
########################-------
etc
是否有任何命令可以运行/pipe,使这些行在上一行的基础上重新渲染(使该条工作起来就像我在本地运行该命令一样)?该命令使用ANSI终端(控制序列)的功能来渲染进度条。使用这些控制字符的编写良好的程序在使用它们之前将检查其输出是否发送到交互式终端。这是因为,如果程序的输出不是像管道(或通过ssh的套接字)这样的交互终端,控制序列通常会弄乱输出 libc定义了函数
isatty()
对于该检查,我打赌程序正在使用它
不久前,我写了一个答案,展示了如何使用自定义的isatty()
函数欺骗程序,在libc之前使用LD\u PRELOAD
链接,让我再次发现
。。。这里是很明显,您的本地终端不支持远程程序要求的控制字符来覆盖行。尝试使用
-t
强制伪tty分配?如果我ssh进入并以本地用户的身份运行命令,它运行良好-关于远程运行命令的内容(不直接使用服务器上的会话)看起来不一样。有没有办法找出不同之处?