2015-10-16 5 views
2

Я использую пакет golang SSH для создания SSH клиента, я поставил режимы терминала, как показано нижеКак удалить код цвета в SSH клиента golang

// Set up terminal modes 
modes := ssh.TerminalModes{ 
    ssh.ECHO:   0,  // disable echoing 
    ssh.TTY_OP_ISPEED: 14400, // input speed = 14.4kbaud 
    ssh.TTY_OP_OSPEED: 14400, // output speed = 14.4kbaud 
} 

// Request pseudo terminal 
if err := session.RequestPty("xterm", 80, 40, modes); err != nil { 
    log.Fatalf("request for pseudo terminal failed: %s", err) 
} 

он отлично работает, но маленькая проблема, когда я используйте команду «LS», он возвращает имена с цветовым кодом, как показано ниже

[[email protected] ~]# ls 
ls 
anaconda-ks.cfg [0m[01;34mpeter[0m 
[01;32mbuild.sh[0m   [01;34mredis64[0m 

это заставляет меня чувствовать себя трудно читать имена файлов, так есть ли способ, чтобы удалить код цвета вокруг имен? благодаря

+2

Иметь 'не ls' вывода цветов:' Ls - цвет = never'? – Volker

+0

Посмотрите на поле '' terminal.Terminal' '(https://godoc.org/golang.org/x/crypto/ssh/terminal#Terminal) '' Escape' и ['vt100EscapeCodes'] (https: //github.com/golang/crypto/blob/master/ssh/terminal/terminal.go#L24). Это может быть решением. – thwd

+3

Вы утверждаете, что являетесь «xterm» (который поддерживает цвет). Может быть, выбрать другой тип терминала? –

ответ

0

Использование session.RequestPty с "VT220" типа терминала

пример: session.RequestPty ("vt220", 80, 40, режимы)

+0

Возможно, возможно, нет: [NewTerminal] (https://godoc.org/golang.org/x/crypto/ssh/terminal#NewTerminal), похоже, не заботится о том, какой тип передан, и ищет примеры использования для 'RequestPty' Я не нахожу ничего полезного. –

+0

Вам не нужно использовать 'NewTerminal' для выполнения команд с помощью ssh. Пример: https://play.golang.org/p/0q0Yu_8vpE –

+1

Это не полезно для меня. Было бы полезно показать, как «vt220» передается на другую сторону pty и * используется *. Не имея этого, я не могу отличить ваш ответ от других. –