社区
MS-SQL Server
帖子详情
高手+热心的人请进!!!
leechie
2001-06-22 09:14:00
主 题:help me!高手们!!!
作 者:leechie
所属论坛:数据库开发
问题点数:20
回复次数:0
发表时间:2001-6-22 20:39:00
有谁知道如果不小心将sco-unix的/etc/passwd删除,如何恢复!!!
...全文
54
4
打赏
收藏
高手+热心的人请进!!!
主 题:help me!高手们!!! 作 者:leechie 所属论坛:数据库开发 问题点数:20 回复次数:0 发表时间:2001-6-22 20:39:00 有谁知道如果不小心将sco-unix的/etc/passwd删除,如何恢复!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
leechie
2001-06-26
打赏
举报
回复
/***************************************************************
* Author : leechie *
* Date : 2001/06/22 *
* Email : leechie@263.net *
* Descriptions : This is the FTP application use FTP API *
****************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/fcntl.h>
#include <dirent.h>
#include <net/libftp.h>
#define NORMAL 0
#define ABNORMAL 1
#define ON 1
#define OFF 0
char DownLoadDir[256];
char UpLoadDir[256];
char HostName[256];
char UserName[256];
char PassWord[256];
FTPINFO ftpinfo;
void check_n_close();
char *ScanStr(char *sstr,char *dstr);
char *PraseFile(char *filename);
char *readline(int fd);
int dirfun(char *dirname,int fd1,int fd2);
char *GetConfig(char *InVal);
int PutFile();
int MkDir();
int main(int argc,char *argv[])
{
int fd1,fd2;
strcpy(DownLoadDir,GetConfig("DownLoadDir"));
strcpy(UpLoadDir,GetConfig("UpLoadDir"));
strcpy(HostName,GetConfig("HostName"));
strcpy(UserName,GetConfig("UserName"));
strcpy(PassWord,GetConfig("PassWord"));
ftpinfo.debug = ON;
ftpinfo.transf_calc = ON;
ftpinfo.linger = OFF;
printf("%s\t%s\t%s\t%s\n",DownLoadDir,UpLoadDir,HostName,UserName,PassWord);
unlink("/tmp/myftpfile.tmp");
unlink("/tmp/myftpdir.tmp");
fd1=open("/tmp/myftpfile.tmp",O_RDWR|O_CREAT|O_EXCL,0666);
if(fd1<0)
{
perror("Open");
exit(1);
}
fd2=open("/tmp/myftpdir.tmp",O_RDWR|O_CREAT|O_EXCL,0666);
if(fd2<0)
{
perror("Open");
exit(1);
}
dirfun(DownLoadDir,fd1,fd2);
close(fd1);
close(fd2);
MkDir();
PutFile();
exit(0);
}
char *GetConfig(char *InVal)
{
char *tmpbuf;
char workbuf[256];
if((tmpbuf=getenv(InVal))==NULL)
{
fprintf(stderr,"[%s]\t>",InVal);
gets(workbuf);
tmpbuf=&workbuf[0];
}
return(tmpbuf);
}
char *readline(int fd)
{
char ch,tmpbuf[256];
int i=0;
memset(tmpbuf,'\0',256);
while(read(fd,&ch,1)==1)
{
if(ch=='\n')
break;
else if(ch==EOF)
{
tmpbuf[0]='\0';
return(NULL);
}
else
tmpbuf[i++]=ch;
}
tmpbuf[i]='\0';
return(&tmpbuf[0]);
}
char *ScanStr(char *sstr,char *dstr)
{
while(*(sstr++)==(*dstr++))
;
printf("str=[%s]\n",dstr);
return(dstr);
}
char *PraseFile(char *filename)
{
char *workbuffer;
workbuffer=ScanStr(DownLoadDir,filename);
return(&workbuffer[0]);
}
int MkDir()
{
char *dirname;
int fd;
fd=open("/tmp/myftpdir.tmp",O_RDWR,0666);
if(fd<0)
return(1);
if (ftp_login ( &ftpinfo, HostName, UserName,PassWord , NULL ) < 0)
{
fprintf(stderr,"error: ftp_login failed.\n");
check_n_close ( &ftpinfo, ABNORMAL );
}
if (ftp_chdir( &ftpinfo, UpLoadDir ) < 0)
{
fprintf(stderr,"error: ftp_chdir failed.\n");
(void) check_n_close ( &ftpinfo, ABNORMAL );
}
if (ftp_pwd ( &ftpinfo ) < 0)
{
fprintf(stderr,"error: ftp_pwd failed.\n");
(void) check_n_close ( &ftpinfo, ABNORMAL );
}
while((dirname=readline(fd))!=NULL)
{
if(dirname[0]=='\0')
break;
dirname=PraseFile(dirname);
printf("dirname:[%s]\n",dirname);
if (ftp_mkdir ( &ftpinfo,dirname ) < 0)
{
fprintf(stderr,"error: ftp_mkdir failed.\n");
check_n_close ( &ftpinfo, ABNORMAL );
return(1);
}
}
if (ftp_bye( &ftpinfo ) < 0)
{
fprintf(stderr,"error: ftp_bye failed.\n");
(void) check_n_close ( &ftpinfo, ABNORMAL );
}
close(fd);
return(0);
}
int PutFile()
{
char *filename,*dfilename;
int fd;
filename=(char *)malloc(sizeof(char)*256);
dfilename=(char *)malloc(sizeof(char)*256);
fd=open("/tmp/myftpfile.tmp",O_RDWR,0666);
if(fd<0)
return(1);
if (ftp_login ( &ftpinfo, HostName, UserName, PassWord, NULL ) < 0)
{
fprintf(stderr,"error: ftp_login failed.\n");
(void) check_n_close ( &ftpinfo, ABNORMAL );
return(2);
}
if (ftp_chdir( &ftpinfo, UpLoadDir ) < 0)
{
fprintf(stderr,"error: ftp_chdir failed.\n");
(void) check_n_close ( &ftpinfo, ABNORMAL );
}
while((filename=readline(fd))!=NULL)
{
dfilename=PraseFile(filename);
printf("filename:[%s] dfilename:[%s]\n",filename,dfilename);
if (ftp_putfile ( &ftpinfo,"/etc/passwd","/tmp/passwd" ) < 0)
{
fprintf(stderr,"error: ftp_putfile failed.\n");
(void) check_n_close ( &ftpinfo, ABNORMAL );
}
else
{
fprintf(stderr,"transfer speed: \n");
fprintf(stderr,"\t\tbytes transferred = %ld\n",
ftpinfo.speed.size_bytes);
fprintf(stderr,"\t\ttime taken = %.2g seconds\n",
ftpinfo.speed.seconds);
fprintf(stderr,"\t\trate = %.2g Kbytes/s\n",
ftpinfo.speed.kbs);
}
}
if (ftp_bye( &ftpinfo ) < 0)
{
fprintf(stderr,"error: ftp_bye failed.\n");
(void) check_n_close ( &ftpinfo, ABNORMAL );
}
close(fd);
return(0);
}
int dirfun(char *dirname,int fd1,int fd2)
{
DIR *dp;
char namebuf[256],tmpname[256];
struct dirent *dirp;
struct stat buf;
memset(namebuf,0,256);
strcpy(namebuf,dirname);
if((dp=opendir(namebuf))==NULL)
return(1);
while((dirp=readdir(dp))!=NULL)
{
memset(namebuf,0,256);
strcpy(namebuf,dirname);
if(!strncmp(dirp->d_name,".",1))
continue;
strcat(namebuf,"/");
strcat(namebuf,dirp->d_name);
if(stat(namebuf,&buf)<0)
continue;
else
{
if(S_ISREG(buf.st_mode))
{
strcpy(tmpname,namebuf);
strcat(tmpname,"\n");
write(fd1,tmpname,strlen(tmpname));
}
else if(S_ISDIR(buf.st_mode))
{
strcpy(tmpname,namebuf);
strcat(tmpname,"\n");
write(fd2,tmpname,strlen(tmpname));
dirfun(namebuf,fd1,fd2);
}
else
{
continue;
}
}
}
close(dp);
return(0);
}
void check_n_close ( ftpinfo, status )
FTPINFO *ftpinfo;
int status;
{
if (ftpinfo -> sockfd >= 0)
close (ftpinfo -> sockfd);
if (status == ABNORMAL)
fprintf(stderr,"error: %s\n", ftpinfo -> ftp_msg);
else
fprintf(stderr,"success: %s\n", ftpinfo -> ftp_msg);
fprintf(stderr,"final reply from server: %d\n", ftpinfo -> reply);
fflush ( stdout );
exit (status);
}
都是他惹的祸!!!
jaguarcts
2001-06-23
打赏
举报
回复
对,楼上人说的不错。
每个用户对应一行,应该没有什么问题。
oicu
2001-06-23
打赏
举报
回复
一个简单的方法,
从你朋友的机器上拷贝一个过来再改嘛
leechie
2001-06-23
打赏
举报
回复
我朋友的机器没装sybase请看
http://www.csdn.net/expert/topic/168/168642.shtm
java源码包---java 源码 大量 实例
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...
别浪费自己的高学历!+研究生应当常去的网站+北邮人!应该反思!+写给每一个北邮人
(转)2011-02-26 22:13 很多人在问念研究生能学到什么,短短的两年时间,上课学不到多少有用的,科研也没怎么搞,到底念研究生能学到什么?一开始念硕士博士的时间都是有这 些迷惘的,甚至有些人连这些问题想也...
免费参加全球最大的Spark+AI峰会(Databricks 2020年6月22-26日)!免费访问峰会主题演讲及分组会议!
对于有丰富大数据和AI应用经验的人员,本书也可以作为大数据和AI
高手
修炼的参考用书。同时,本书也特别适合作为高等院校的大数据和人工智能教材。 作者简介 王家林,Apache Spark执牛耳者现工作于硅谷的AI实验室,...
gpio模拟7816协议!!!
高手
请
进
,不知道又没有人来
本人正打算模拟7816协议,已经把7816-1-2-3协议英文版看完,
请
高手
提点建议
谁才是
高手
?中国程序员的迷惘!
我认为有些人的观点错了。错得一塌糊涂。 对于这个问题,我的基本观点是:任何实践都是理论的载体或表现形式。而理论也是由实践上升而来的。两者是辨证的。今天,我们只关注它的前一部分:任何实践都是理论的载体和...
MS-SQL Server
34,588
社区成员
254,588
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章