PC2上のC++プログラムで、PC2のホスト名を指定してPC2上で別のプログラムを起動したいと考えています。私は実際には今複雑にしたくないので、プログラムがPC2上の実行ファイルの検索パス上にあると仮定しよう。私が理解していることから、これは何とかsshで行うことができますか? PC1とPC2の両方にアカウントを持っているので、PC1にログインしている場合(ユーザー名とパスワードを入力する必要はありません)、sshは私に接続しますこれをやってみようか? https://www.libssh.org/は物事を簡素化するのに役立つでしょうか?C++コードから別のコンピュータでプログラムを実行するには?
答えて
ssh
を使用してリモートコマンドを実行するコマンドラインを構築します。次に、system()
を使用してそのコマンドを実行します。
std::string pc2_hostname;
std::string cmd = "ssh " + pc2_hostname + " command_to_execute";
system(cmd.c_str());
私は参照してください。私はこのソリューションを使用したが、私はユーザー名/パスワードを供給する必要があることが判明したらどうなりますか?プログラムがsystem()を呼び出した後、sshがユーザとやりとりしようとしているかどうか調べることはできますか?私はそれがOPで必要とされないと特別に言ったことを知っているので、これはちょっとしたボーナス問題です。 – TheMountainThatCodes
パスワードなしのSSHを設定する必要があります。パスワードが必要な場合は、ユーザーに確認を求めます。 – Barmar
SSHにパスワードが必要な場合にプログラムがエラーを表示する方法はありますか? – TheMountainThatCodes
あなたはこのC++ RPCライブラリにより興味があるかもしれない:
http://szelei.me/introducing-rpclib
自分の例から、リモートコンピュータ上:ローカルコンピュータで
#include <iostream>
#include "rpc/server.h"
void foo() {
std::cout << "foo was called!" << std::endl;
}
int main(int argc, char *argv[]) {
// Creating a server that listens on port 8080
rpc::server srv(8080);
// Binding the name "foo" to free function foo.
// note: the signature is automatically captured
srv.bind("foo", &foo);
// Binding a lambda function to the name "add".
srv.bind("add", [](int a, int b) {
return a + b;
});
// Run the server loop.
srv.run();
return 0;
}
:
#include <iostream>
#include "rpc/client.h"
int main() {
// Creating a client that connects to the localhost on port 8080
rpc::client client("127.0.0.1", 8080);
// Calling a function with paramters and converting the result to int
auto result = client.call("add", 2, 3).as<int>();
std::cout << "The result is: " << result << std::endl;
return 0;
}
絶対に何かを実行するには、リモートコンピュータ上で「システム」コールを行うことができます。だから、サーバー側で持っている:
// Binding a lambda function to the name "add".
srv.bind("system", [](char const * command) {
return system(command);
});
そして今、あなたは、クライアント側で:
明らかauto result = client.call("system", "ls").as<int>();
、あなたは、このようなライブラリを使用する場合は、セキュリティを考える必要があります。これは信頼できるLAN環境でうまくいくでしょう。インターネットのような公衆ネットワークでは、それほど良い考えではないかもしれません。
- 1. Cで別のコンピュータでプログラムを実行
- 2. 別のコンピュータからコンピュータ上のバッチファイルを実行するには?
- 3. C++プログラムを許可されたコンピュータでのみ実行する
- 4. Cの別のプログラムからプログラムを実行
- 5. 別のubuntuマシンからubuntuでC++プログラムを実行するには?
- 6. C#セットアッププロジェクトから別のプログラムを実行する
- 7. 別のC#プログラムからのC#実行可能ファイルの出力
- 8. 別のプログラムの下でCプログラムを実行する方法
- 9. CコードをC#から実行する
- 10. LinuxのCプログラムから複数のCプログラムを実行する
- 11. C++プログラムから別のプログラムを実行するにはどうすればいいですか?
- 12. SWIGにバインドされたPython + Cプログラムを実行すると、別のコンピュータで実行中にDLLが見つからないというエラーが発生する
- 13. Cプログラム内からプログラムを実行
- 14. 別のJavaプログラムからRMIプログラムを実行する
- 15. 別のコンピュータでプログラムを実行すると、メソッドが呼び出されない
- 16. PythonプログラムをPythonなしのコンピュータで実行できますか? C/C++はどうですか?
- 17. NUnitからC++コードを実行する
- 18. エラー:gem ...(Errno :: EACCES)を実行中に、別のコンピュータですか?
- 19. ヘッダーが存在しないコンピュータでコンパイル済みのCプログラムを実行する
- 20. C++プログラムからregasm.exeを実行するには?
- 21. C#からJavaプログラムを実行するには?
- 22. C++の別のディレクトリからコマンドラインツールを実行するには
- 23. 私はどのように私のWindowsコンピュータのコマンドラインからこのJavaプログラムを実行するのですか?
- 24. プログラムの実行中に実行されるコード行は何回ですか?
- 25. C#.exeファイルをコピーせずに別のプログラムを実行する
- 26. C++コードから実行するPythonファイル
- 27. コンピュータのバックグラウンドでJavaプログラムを実行する
- 28. Pythonのないコンピュータでプログラムを実行する
- 29. PHPからCプログラムを実行
- 30. C++コードから実行可能なjarファイルを実行する
CLIから手動で行う方法はわかりますか?シェルコマンドを実行するために、同じコマンドを 'system()'呼び出しに入れてください。 – Barmar