[M1 Mac, Big Sur 11.6.8, clang 13.0.0, FLTK 1.3.8, NO IDE]
MacとWindows11間のファイル移動に使用していたOpenSSHサーバが突然使えなくなり、復旧もできないのでSMBに変更しました。
mount_smbfsファイルはsbinディレクトリにあり、.bash_profileなどでパスを通しておく必要があります。
Mac-Mac間、Mac-Linux間はこれまで通りSFTPを使います。
OpenSSHサーバについてはWindows11関連のネット情報がほぼ皆無で本当に使えるのかどうか疑問ではあります。
時たまイジるWindows11は本当に使いにくく、Windows Vista、Windows8以来の失敗作という評価が私の中で固まりつつあります。Windows3.1以降では最悪だと思います。大変でしょうが、次世代OSの開発を急いでもらいたいものです。
extern char *dirName;
void conn_cb(Fl_Widget*, void*) {
string cmd_conn;
string pc;
choice_num = choice -> value();
switch(choice_num){
case 0:{
pc = "xxx.local"; // Mac mini Intel
break;
}
case 1:{
pc = "xxx.local"; // MacBook Air M1
break;
}
case 2:{
pc = "xxx.local"; // MacBook Intel
break;
}
case 3:{
pc = "mount_smbfs //[ユーザ名]@192.168.xx.x/share /Users/[ユーザ名]/share"; // WindowsPC
break;
}
case 4:{
pc = "xxx.local"; // LinuxPC
break;
}
}
if (choice_num != 3){
cmd_conn = "sftp " + pc;
} else {
cmd_conn = pc;
}
cout << "cmd_conn " << cmd_conn << endl;
conn_input -> value("");
conn_input -> value(cmd_conn.c_str());
string cmdConnCopy = "echo '" + cmd_conn + "' | LANG=ja_JP.UTF-8 pbcopy";
output_line -> insert(cmdConnCopy.c_str());
output_line -> insert("\n");
system(cmdConnCopy.c_str());
}
void cmd_cb(Fl_Widget*, void*) {
string cmd0;
string cmd1;
string cmd;
int onoff_put = put_rbtn->value();
int onoff_dir = dir_rbtn->value();
if (choice_num != 3){
if (onoff_put == 1){
cmd0 = "put";
} else {
cmd0 = "get";
}
} else {
if (onoff_put == 1){
cmd0 = "cp";
} else {
cmd0 = "cp";
}
}
if (onoff_dir == 1){
cmd1 = "-r";
} else {
cmd1 = "";
}
const char* fileName = file_input -> value();
const char* toName = to_input -> value();
if (choice_num != 3){
cmd = cmd0 + " " + cmd1 + " \"" + string(fileName) + "\" " + string(toName);
} else {
if (onoff_dir == 1){
cmd = cmd0 + " " + cmd1 + " \"" + string(fileName) + "\" /Users/[ユーザ名]/share/" + dirName;
} else {
cmd = cmd0 + " " + cmd1 + " \"" + string(fileName) + "\" /Users/[ユーザ名]/share";
}
}
cout << "cmd " << cmd << endl;
cmd_input -> value("");
cmd_input -> value(cmd.c_str());
string cmdCopy = "echo '" + cmd + "' | LANG=ja_JP.UTF-8 pbcopy";
output_line -> insert(cmdCopy.c_str());
output_line -> insert("\n");
system(cmdCopy.c_str());
}