LINUX.ORG.RU

Графический запрос пароля


0

0

Доброго времени суток.

У меня из скрипта командой mount.cifs монтируется SMB-ресурс.
Есть ли какие-нибудь GTK средства, позволяющие запрашивать пароль в виде
графического окошка и передавать полученный ввод в параметр пароля
команды mount.cifs?
anonymous

В догонку: дистрибутив Xubuntu

anonymous
()
Ответ на: комментарий от anonymous

Если я правильно понимаю, gksudo и gksu нужны для выполнения задач от
имени ROOT из-под пользователя, то есть ввод пароля root для выполнения
привилегированной команды. А мне нужно пароль к SMB-ресурсу через 
графический ввод передать команде mount.cifs, чтобы mount.cifs произвел
аутентификацию на smb-сервере с этим паролем.
Если gksudo и gksu может так делать, то прошу привести примеры команд.
Заранее спасибо.

anonymous
()
Ответ на: комментарий от scaldov

например как у меня (поля добавишь по вкусу)
gcc ${CC_FLAGS} -DPIPE_PATH=${PIPE_PATH} -o startvm startvm.c

#include <curses.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <sys/time.h>
#include <sys/wait.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <fcntl.h>
#include <pty.h>
#include <signal.h>
#include <gtk/gtk.h>

int g_trigger;

void send_setuid_passwd(char *passwd)
{
int cfifo;
if(g_trigger)return;
g_trigger=1;
cfifo=open(PIPE_PATH,O_WRONLY);
if(cfifo<0)
{
printf("failed to open fifo at path %s\n",PIPE_PATH);
}
else
{
write(cfifo,passwd,strlen(passwd));
if(!fork())
{
sleep(6);
execlp("vmware","vmware",(char*)0);
}
}
gtk_main_quit();
}

gint delete_event( GtkWidget *widget,GdkEvent *event, gpointer data)
{
gtk_main_quit ();
return FALSE;
}

void enter_callback(GtkWidget *widget, GtkWidget *entry)
{
const gchar *entry_text;
entry_text=gtk_entry_get_text(GTK_ENTRY(entry));
send_setuid_passwd((char*)entry_text);
}

int main (int argc,char **argv)
{
GtkWidget *w_main, *b_ok, *b_cancel,*w_passwd,*w_label;
GtkWidget *vbox, *hboxu, *hboxl;
GtkWidget *menubar,*menu,*menu_file,*item;
g_trigger=0;
gtk_set_locale ();
gtk_init (&argc, &argv);
w_main = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(w_main),"Die Geheimhaltung");
vbox=gtk_vbox_new(FALSE,0);
hboxu=gtk_hbox_new(FALSE,0);
hboxl=gtk_hbox_new(FALSE,0);
b_ok=gtk_button_new_with_label("Ok");
b_cancel=gtk_button_new_with_label("Cancel");
w_label=gtk_label_new("Enter password:");
w_passwd=gtk_entry_new();
gtk_entry_set_visibility(GTK_ENTRY(w_passwd),0);
gtk_box_pack_start(GTK_BOX(hboxu),w_label,0,0,0);
gtk_box_pack_start(GTK_BOX(hboxu),w_passwd,0,0,0);
gtk_box_pack_end(GTK_BOX(hboxl),b_ok,0,0,0);
gtk_box_pack_end(GTK_BOX(hboxl),b_cancel,0,0,0);
gtk_box_pack_start(GTK_BOX(vbox),hboxu,0,0,0);
gtk_box_pack_start(GTK_BOX(vbox),gtk_hseparator_new(),0,0,10);
gtk_box_pack_start(GTK_BOX(vbox),hboxl,0,0,0);
gtk_container_add(GTK_CONTAINER(w_main),vbox);
gtk_container_set_border_width(GTK_CONTAINER(w_main),10);
//
menu = gtk_menu_new();
menu_file = gtk_menu_new();
item = gtk_menu_item_new_with_label("_Quit");
gtk_menu_shell_append((GtkMenuShell*)menu_file,item);
item = gtk_menu_item_new_with_label("_File");
gtk_menu_shell_append((GtkMenuShell*)menu,item);
gtk_menu_item_set_submenu((GtkMenuItem*)item,menu_file);
//gtk_menu_attach_to_widget((GtkMenu*)menu,w_main,0);
gtk_container_add((GtkContainer*)w_main,menu);
gtk_container_add((GtkContainer*)w_main,menu);
gtk_widget_show(menu_file);
gtk_widget_show(menu);
//
g_signal_connect(G_OBJECT(w_passwd), "activate", G_CALLBACK(enter_callback), (gpointer)w_passwd);
g_signal_connect(G_OBJECT(b_ok),"clicked", G_CALLBACK(enter_callback), (gpointer)w_passwd);
g_signal_connect(G_OBJECT(w_main),"delete_event",G_CALLBACK(delete_event),NULL) ;
g_signal_connect_swapped(G_OBJECT(b_cancel),"clicked",G_CALLBACK(gtk_main_quit) ,G_OBJECT(w_main));
gtk_widget_show_all(w_main);
gtk_main();
return 0;
}

scaldov ★★
()
Ответ на: комментарий от scaldov

Спасибо большое. Я в GTK-программировании не шарю, поэтому думал
обойтись скриптингом. Но теперь, видимо, буду шарить. :)

anonymous
()
Ответ на: комментарий от scaldov

Я не программист, подозреваю что и топикозачинщик то же.

o2inhal
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.