|
.NET Framework on Linux works through Mono; even the updated .NET Core uses a lot of components and structures from the Mono project.
Quote: move the Crystal Reports coded in Asp.net to LInux through Mono It should build just fine as long as you have Mono SDK setup. There might be some minor changes (such as file system, permissions, etc.) other elements would be okay.
.NET Source Code Integration | Mono
The sh*t I complain about
It's like there ain't a cloud in the sky and it's raining out - Eminem
~! Firewall !~
|
|
|
|
|
Facts:
0) I'm writing a .Net Core 3.1 command line app (using C#) to read text files on some Raspberry Pi machines on the network. This app will be able to run on either Windows or Linux.
1) The files in question are in the /etc , /proc and /sys folders.
2) I don't want to create shares of these folders.
3) I'd prefer not to have to install/configure anything on the remote boxes (if at all possible).
4) I know the user ids and passwords for the remote boxes, and am aware that I have to somehow use these credentials in order to "connect" to the remote boxes).
5) I don't want to use another language. I mean, doNet Core is supposed to be cross-platform, right?
Problem:
How do I go about reading a file on a remote linux box? I've tried a number of ways to do this, but I keep getting the following exception:
"The network name cannot be found. : '\\\\192.168.1.10\\sys\\class\\thermal\\thermal_zone0\\temp'"
(BTW, when running in Windows, the exception is presented with backslashes. I'm actually using forward slashes.)
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
|
They don't mention anything about .Net Core...
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
It supports .NET Standard 1.3 and 2.0, so it should just work in Core.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
|
I added SshNet with Nuget, and it workds great.
using SshNet;
using (var client = new SshClient("192.168.1.10", "userid", "password"))
{
client.Connect();
string data = string.Empty;
using (SshCommand cmd = client.CreateCommand("cat /proc/cpuinfo"))
{
data = cmd.Execute();
}
}
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
Hi John, it supports private keys to - I use it in one of my net core apps to communicate with a remote database using port forwarding
"I didn't mention the bats - he'd see them soon enough" - Hunter S Thompson - RIP
|
|
|
|
|
FTP?
FTP Examples for .NET Core C#
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it.
― Confucian Analects: Rules of Confucius about his food
|
|
|
|
|
FTP would require both installation and configuration on the Linux machines. SSH service is installed by default but not enabled.
|
|
|
|
|
Is not FTP installed by default on all Linux machines nowadays?
I honestly would have taken that for granted. FTP was developed in the days when you measured program size in kilobytes. The protocol is so simple that a student could implement it as homework assignment #3. I can't see any reason for taking it out.
|
|
|
|
|
Member 7989122 wrote: Is not FTP installed by default on all Linux machines nowadays?
No, not anymore. There are better replacements such as SFTP or SCP. Curl or wget can be used as FTP clients if absolutely necessary.
Member 7989122 wrote: FTP was developed in the days when you measured program size in kilobytes.
Those days nobody could imagine the need for network security. FTP transmits everything, including user credentials, in cleartext. The protocol design makes it difficult to pass through firewalls without causing additional security risks. In general, it's just too dangerous and should not be used.
|
|
|
|
|
Quote: If you are connecting to an FTP server that requires credentials and supports Secure Sockets Layer (SSL), you should set EnableSsl to true.
And there's one's own encryption / decryption, staging directories, etc. Keep the baby.
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it.
― Confucian Analects: Rules of Confucius about his food
|
|
|
|
|
Do you want to force linux to do the windows thing, or windows to do the linux thing?
For the former run samba on the linux box and create shares you can access from windows. This will probably suck, the degree to which it sucks will depend on the file system you are using on the linux side.
For the latter you can run an ftp server on the linux side or setup ssh and use scp. These will suck less.
|
|
|
|
|
I found a solution - use the SshNet library and I don't have to do anything on the other pi's on the network.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
Quote: Facts:
0) I'm writing a .Net Core 3.1 command line app (using C#) to read text files on some [...] machines on the network.[...]
[...]
2) I don't want to create shares of these folders.
If those files aren't shared, how do you expect to read them? after all, if those remote files were on Windows, you'd still need to share them for a remote computer to read them.
You appear to be under the impression that, on Linux, all files are shared by default. I can assure you that this is not the case.
[...]
How do I go about reading a file on a remote linux box?
Same way you would on a Windows box: you'd create a share.
A second option is to install some sort of file server on the Pis(ftp, http, ssh/scp, etc) and use that to copy the files across.
|
|
|
|
|
You really should read the whole thread. The solution has been found.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
so i have Ubuntu 20.04 and i am using Glade v3.36 so my issue is i want to be able to have my Glade form Maximize when the Form Shows on the screen, can anyone help me get the Form to maximize programmatically . thank you
#include <gtk/gtk.h>
typedef struct {
GtkWidget *w_dlg_file_choose; GtkWidget *w_img_main; GtkWidget *image;
} app_widgets;
gchar *file_name = "image1.jpg";
int main(int argc, char *argv[]) {
GtkBuilder *builder;
GtkWidget *window;
app_widgets *widgets = g_slice_new(app_widgets);
gtk_init(&argc, &argv);
builder = gtk_builder_new_from_file("glade/window_main.glade");
window = GTK_WIDGET(gtk_builder_get_object(builder, "window_main"));
widgets->w_dlg_file_choose = GTK_WIDGET(gtk_builder_get_object(builder, "dlg_file_choose"));
widgets->w_img_main = GTK_WIDGET(gtk_builder_get_object(builder, "img_main"));
gtk_builder_connect_signals(builder, widgets);
g_object_unref(builder);
gtk_widget_show(window);
gtk_main();
g_slice_free(app_widgets, widgets);
return 0;
}
|
|
|
|
|
I know I am missing something really simple here, but all I am trying to do is display a image from a jpg file on a glade form statically w/o a file chooser, here is my code so far, any help would be great.
<pre>#include <gtk/gtk.h>
typedef struct {
GtkWidget *w_dlg_file_choose; GtkWidget *w_img_main; GtkWidget *image;
} app_widgets;
gchar *file_name = "image1.jpg";
int main(int argc, char *argv[]) {
GtkBuilder *builder;
GtkWidget *window;
app_widgets *widgets = g_slice_new(app_widgets);
gtk_init(&argc, &argv);
builder = gtk_builder_new_from_file("glade/window_main.glade");
window = GTK_WIDGET(gtk_builder_get_object(builder, "window_main"));
widgets->w_dlg_file_choose = GTK_WIDGET(gtk_builder_get_object(builder, "dlg_file_choose"));
widgets->w_img_main = GTK_WIDGET(gtk_builder_get_object(builder, "img_main"));
gtk_builder_connect_signals(builder, widgets);
g_object_unref(builder);
gtk_widget_show(window);
gtk_main();
g_slice_free(app_widgets, widgets);
return 0;
}
void on_info_btn_clicked() {
gtk_main_quit();
}
void on_window_main_destroy() {
gtk_main_quit();
}
|
|
|
|
|
Member 14851172 wrote: I know I am missing something really simple here Yes, the details of your problem.
|
|
|
|
|
Here is the latest snag I am against.
Main part of my application is to WAIT to receive data.
In fancy techno talk - I have a server in "accept" state - waiting to receive data - hence processing is stopped.
The data received is processed and then passed to OpenGL - OpenGL is in similar waiting state "they" call glutMainLoop();
Obviously unworkable situation - cannot have two waiting state. .
Found "fork" which creates two processes , but they do not share variables.
Looking at socketpair to solve that "problem".
Now it looks as proverbial "long way around the barn"...
Any other "professional" suggestion ?
Not really sure how to debug such setup - jumping between processes , but willing to try it.
|
|
|
|
|
One word to read up on...
threads
Cheers,
Peter
Software rusts. Simon Stephenson, ca 1994. So does this signature. me, 2012
|
|
|
|
|
Multiple processes can happily share variables in global memory. They just need to use semaphores or mutexes to synchronise their access. Just about every application running on the web, on desktops, phones etc. uses these features.
|
|
|
|
|
fork() and signal() - that's what I used in the 1980's and 1990's before POSIX 4 (later POSIX 1a now pthreads and more recently, threads native to C11 and C++11) came into being. This includes sigwait(), sigpause(), sigsuspend(), etc. Some of these work with threads. It might be possible to emulate the functionality of all concurrency primitives with these elements alone.
You can look under the POSIX Standard for more information The Open Group Base Specifications Issue 7, 2018 edition[^]
There is already a multi-platform Pause-Resume thread framework on this site. That's what landed me on this web site. It's right here Data Processing Thread with the Pause/Resume Functionality[^]
|
|
|
|
|