程序使用终端名称而不是用户输入

时间:2013-12-12 23:01:21

标签: c ssh terminal

这个程序是用来获取一个主机名和用户名并通过SSH使用finger进行连接,之前它已经运行了,但是当我运行它时它会忽略用户名并使用我的shell中出现的名称所以我没有得到正确的结果。

我的shell以Matt $开头,这个程序最终运行Matt @ server而不是userName @ server。

#include <iostream>
#include <string>
#include <cctype>
#include <cstdlib>
#include <stdio.h>
#include <ctype.h>

int main()
{
std::string CommandString;

char buffer1 [274];

printf("Enter your Host Name; it must be characters and not more than 255");
char hostName[254];
int len2;
fgets(hostName, sizeof(hostName), stdin);
rewind (stdin);
len2 = strlen(hostName);
if(hostName[len2-1] == '\n') hostName[--len2] = '\0';
if(len2 >254 ||!isalpha(hostName[len2-1]))
{
    printf("Invalid Host Name");


}


printf("Enter your User Name; it must be characters and not more than 20");
char userName[19];
int len;
fgets(userName, sizeof(userName), stdin);
rewind (stdin);
len = strlen(userName);
if(userName[len-1] == '\n') userName[--len] = '\0';
if(len >19 || isalpha(userName[19]))
{

    printf("Invalid User Name");


}


sprintf(buffer1,"ssh %s usr/bin/finger %s",hostName,userName);
system((char*)buffer1);

return 0;
}

1 个答案:

答案 0 :(得分:0)

我不知道你为什么在主机名和用户名之间有usr / bin / finger。你想在远程主机上运行/ usr / sbin / finger吗?

你应该改变这一行

sprintf(buffer1,"ssh %s usr/bin/finger %s",hostName,userName);

sprintf(buffer1,"ssh -l %s %s /usr/bin/finger",userName,hostname);

试一试。