Использование plink и выполнение с удаленного компьютера (windows)

plink [email protected] '/home/user/test/testpgm'

При запуске приведенной ниже программы, которая находится на компьютере с Linux, с компьютера с Windows с помощью plink, я получаю только следующие сообщения.

Test Pgm
Enter a string:

При вводе строки в качестве ввода она не отображается в командном окне, и вывод также не отображается.

#include<stdio.h>
int main(void)
{
   int i;
   char buf[30];
   printf("Test Pgm \n");
   printf("Enter a string:");
   fflush(stdout);
   gets(buf);
   printf("Input str:%s \n",buf);

   return 0;
}

gcc test.c -o testpgm

PS: Plink (PuTTY Link) — это инструмент подключения из командной строки, аналогичный UNIX ssh.


person m4n07    schedule 11.01.2013    source источник
comment
Вы пытались добавить вызов fflush(stdout) после printf? возможно, соединение plink закрывается до того, как вывод будет правильно сброшен.   -  person Andreas Grapentin    schedule 11.01.2013
comment
В конце я попробовал fflush(stdout), он не работает.   -  person m4n07    schedule 11.01.2013
comment
При изменении gets(buf) на scanf(%s,buf) работает частично. Что бы я ни вводил, я вижу это как вывод. Но я не могу видеть, что я ввожу.   -  person m4n07    schedule 11.01.2013
comment
Хорошо, попробуйте добавить -t к вашему вызову plink. Plink не предназначен для использования с интерактивными сеансами, как вы его используете. взгляните на это: the.earth.li/~sgtatham/ putty/0.58/htmldoc/Chapter7.html особенно строка Plink, вероятно, не то, что вам нужно, если вы хотите запустить интерактивный сеанс в окне консоли.   -  person Andreas Grapentin    schedule 11.01.2013
comment
Спасибо, Андреас! Он работает при добавлении -t. Если вы знаете какие-либо альтернативы, пожалуйста, дайте мне знать.   -  person m4n07    schedule 11.01.2013
comment
openssh было бы хорошо, я думаю. Я изложу свои мысли и идеи в ответ.   -  person Andreas Grapentin    schedule 11.01.2013


Ответы (2)


Документация Plinks1 предполагает, что вам не следует использовать Plink для интерактивные сеансы оболочки, как вы обычно делаете с ssh, но вместо этого для автоматизированных задач. Однако, если вы передадите параметр -t своему вызову plink, вы можете придать ему некоторое интерактивное поведение (с ограничениями).

некоторые другие альтернативы ssh в среде Windows:

freeSSHd (предоставляется Microsoft) http://www.freesshd.com/

openSSH http://www.openssh.com/

dropbear https://matt.ucc.asn.au/dropbear/dropbear.html

Я не проверял ни один из них, но я думаю, вы поймете это :)

person Andreas Grapentin    schedule 11.01.2013

Это может быть бесполезно для этого сценария, но для отключения интерактивных подсказок и автоматического принятия рукопожатия ssh вы можете использовать указанные ниже параметры при попытке попасть на сервер и выполнении команд с помощью Plink.

plink -batch -v username@hostname -pw password -m shell.sh

Где: -batch (отключить все подсказки)

echo y | plink -ssh username@hostname -pw password -m commands.txt
person Alok Tiwari    schedule 25.12.2019