#!/bin/bash
while read -r line; do
awk -F '^"|","|"$' '$0 ~ line{print $2}' line="$line" data.csv
done < list.txt
$ while read -r line; do awk -F '^"|","|"$' '$0 ~ line{print $2}' line="$line" data.csv; done < list.txt
The Mike
John
Johnny
Lizard
Johnny
Этот разделитель полей имеет дело со встроенными кавычками и/или запятыми
По умолчанию при выполнении команды на удаленной машине с помощью ssh TTY не выделяется для удаленного сеанса. Это позволяет Вам передать двоичные данные, и т.д. не имея необходимость иметь дело с причудами TTY. Это - среда, предусмотрел команду, выполняемую на computerone
.
Однако при выполнении ssh без удаленной команды он ДЕЙСТВИТЕЛЬНО выделяет TTY, потому что Вы, вероятно, будете выполнять сессию оболочки. Это ожидается ssh otheruser@computertwo.com
команда, но из-за предыдущего объяснения, существует не TTY, доступный той команде.
Если Вы хотите оболочку на computertwo
, используйте это вместо этого, которое вызовет выделение TTY во время удаленного выполнения:
ssh -t user@computerone.com 'ssh otheruser@computertwo.com'
Это является обычно соответствующим при возможном выполнении оболочки или другого интерактивного процесса в конце ssh цепочки. Если Вы собирались передать данные, это не является ни соответствующим, ни необходимым для добавления -t
, но затем каждая команда ssh содержала бы создание данных или - использующий команду, как:
ssh user@computerone.com 'ssh otheruser@computertwo.com "cat /boot/vmlinuz"'
Это ожидает интерактивный терминал на tty устройстве на промежуточном сервере.
При попытке этой команды она должна работать:
ssh user@computer1 -t "ssh otheruser@computer2"
Посмотрите man ssh
для -t
опция.
Существует лучший способ использовать SSH в качестве реле: используйте ProxyCommand
опция. У Вас должен будет быть ключ на клиентской машине, которая позволяет Вам войти в систему во второй компьютер (открытый ключ является рекомендуемым способом использовать SSH при большинстве обстоятельств так или иначе). Вставьте это Ваш ~/.ssh/config
и выполненный ssh computertwo
.
Host computerone
HostName computerone.com
UserName user
Host computertwo
HostName computertwo.com
UserName otheruser
ProxyCommand ssh computerone exec nc %h %p
nc
netcat. Любая из этих нескольких доступных версий сделает.
Я решил эту проблему, добавив RequestTTY Yes в мой файл конфигурации ssh, расположенный по адресу ~/.ssh/config, следующим образом...
Host myserver.com
User my-ssh-username
RequestTTY Yes
Вы можете переопределить параметр конфигурации SSH «RequestTTY» из командной строки.
Мой рабочий пример cd-serv-one.sh
запускается /bin/bash
в сеансе SSH после выполнения нескольких команд:
#!/bin/bash
ssh -o "requestTTY=yes" User@ExampleHostName "cd /home/myPathFoo/myPathBar; /bin/bash"
А теперь я просто запускаю ./cd-serv-one.sh
для запуска необходимого сеанса SSH.