winscp连接windows虚拟机,显示被拒绝;爬虫定时任务执行问题。

原因:win10的操作系统, 是客户端类的操作系统,不是服务端的操作系统。默认不安装openssh的服务器,只能自己去安装。

 

 用户名密码正确的情况下,提示:网络错误,连接被拒绝

1. 可以ping 通

2. 关闭了防火墙,(其实不用关防火墙,只要允许通过的应用中勾选了OpenSSH就可以访问了)。

3. 检查是否开启 ssh服务   https://blog.csdn.net/weixin_72910567/article/details/132414264

检查方法:

输入命令在PowerShell(管理员)模式下操作

左下搜索框中输入

 

输入命令 Get-WindowsCapability -Online | ? Name -like 'OpenSSH*' 来查看OpenSSH服务器与客户端是否安装完成,安装完成如图下所示

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

开始---设置——搜索“添加可选功能“  ——添加功能——OpenSSH服务端,

只安装了OpenSSH客户端,没有安装OpenSSH服务器,马上安装。

 

安装成功后,winscp可以连接成功了。

注:SSH协议的默认端口是22,一般不会去更改这个端口号。

可以更改SSH协议的默认端口号。在服务器端,可以通过编辑SSH配置文件(通常为/etc/ssh/sshd_config)来修改端口号。修改后需要重启SSH服务以使更改生效。

但是,不建议随意更改SSH的默认端口号,因为这样做可能会使安全性降低。更改端口号可能会使潜在的攻击者更容易发现服务器上的SSH服务,并增加攻击面。此外,如果将端口号更改为非标准的端口号,客户端连接时需要指定正确的端口号。

如果出于安全考虑需要更改SSH的默认端口号,建议选择一个不常用的端口号,并确保服务器上的防火墙规则允许通过该端口的通信。同时,应该确保只有授权的用户可以访问SSH服务,并采取其他安全措施来保护服务器的安全。

 

 

 

 ------------------------------------------------------------------------------------------windows定时任务一直不能稳定运行???????????--------------------------------------------------

windows定时任务一直不能稳定运行???????????

除了,win+R可以打开运行窗口,另外:开始——》windows系统——》运行

运行: taskschd.msc——》任务计划程序

 1. 将bat文件中写入日志,生成日志文件,如:echo "开始爬取" >> log.txt              #没有生成日志文件,其实是生成了,由于定时任务设置没有写起始于参数,所以默认生成在c:\system32下了。

2. 将操作的bat文件路径全部改成英文,不要中文路径出现。,bat中加chcp 65001,中文就不乱码了,其实中文路径也没有问题。

3. 先在本地创建最小单位的 bat,一步一步排除。

4.  最小bat仅写日志文件,但日志文件中出现乱码。

解决方法:思路,bat命令用指写编码的方式写入日志文件。

@echo off
powershell -Command "Add-Content -Encoding UTF8 -Value '---------------------任务执行完毕-------------------%time%' -Path 'log.txt'"

 

 bat文件的注释:    ::

@echo与echo的区别:

1) 带@,不输出命令本身

2)不带@,控制台会输出命令本身。

 

5.  自动运行bat可以执行,并定入日志文件,用%time%来记录当前时间。

6. 创建定进任务,查看是否执行,到点后历史记录中有日志执行

 

7   查看日志的别的方法:

win+ R  在“运行”对话框中,键入“eventvwr.msc”,然后按“Enter”键。bat

8. 手动运行bat文件,可以正确生成日志文件。但放入计划任务中,就不能生成日志文件了,尽管他的历史记录中有事件数7个,但没有日志文件运行,仍说明没正确启动。

解决参考:https://blog.csdn.net/Xintaiwuyanzu/article/details/131552654(-----这个做不做好像都行吧。???服务器上没有弄就好了。)

先在本地计算机上配置好后试一下。按以上配置后,结果还是不行。

本地查看历史记录显示(已禁用),点击右侧“启用所有任务历史记录”

 

 

事件查看日志:enentvwr.msc

本地安全策略:secpol.msc

任务计划:taskschd.msc

策略编辑器:gpedit.msc

9. 在计划任务里,右键点击手动运地,仍然没有执行,虽然显示是执行了。,终于被我找到原因了,bat文件是写日志的,自动生成log.txt文件,这个计划任务在操作这里要设定起始于参数F:\spider\设置上就好了。

其实,它是执行了,生成的日志文件没有指定起始于(可选)目录时,它默认 C:\Windows\System32,log.txt文件是生成在C:\Windows\System32p 这个目录下了,我找见了。

参考:https://blog.csdn.net/lihongzhai/article/details/128192199

 

 

10 。终于定时任务执行了,也写了日志文件了,但却没有powershell,也没有打开浏览器。和手动直接双击bat的效果不一样。为什么???

选择只在用户登录时行就会弹出命令行窗口了,不管用户时否登录都要运行是不会弹出命行窗口的。

 

11. 终于可能定时启动并打开窗口和浏览器了,还有两个功能需要实现:1.) 窗口弄完可以不关闭,保持下午18点再自动闭,这样就可以一整天验证前一天是否正确了   2)现在日志文件中的结束时间不是真正的结束时间,应返回bat文件中一个真正原爬取结束的时间。写进日志文件中, 这样才是真正的日志文件。

 

12 所有的计划任务都选择:“只在用户登录时运行”  当凌晨1点时,用户已退出登陆,这时用bat命令让用户再登陆一下。这样才更保险。

方法:1)取消锁屏

           2)用户选择自动登陆

           3)计算机不进入睡眠或休眠模式

就算这样可以,但是不安全了。 

https://blog.csdn.net/lihongzhai/article/details/128192199

 

昨晚走时没有弄取消锁屏,心想估计凌晨3点时,一个定时任务也不会运行,因为锁屏后,用户就自动退出了,今天早上来了以后,5个定时任务。4个运行成功,只有一个报错了。为什么??

原因:已启用 电池的 唤醒定时器

 

win -- 搜索 编辑电源计划 -- 更改 高级电源设置 --

 

睡眠 -- 允许使用唤醒定时器

 

1. 先解决这个没有运行的?报错:操作员或系统管理员拒绝了请求

2. 查看当前的锁屏状态,看是不是取消了锁屏?

 

 


解释下三个参数:
【程序或脚本】文本框中填的是Python编译器的名称,一般就是python.exe,【起始于】文本框中填的是Python编译器的目录,上图中假设你的Python编译器的完整路径是“C:\Python27\python.exe”,【添加参数】文本框中填的是你的Python程序的完整路径,这里假设在C盘的Users文件夹下面有一个叫做code.py的文件。如果你的Python程序包含命令行参数,将其添加到Python程序的完整路径之后即可。
我自己的设置:

其他默认设置即可。

 

遇到以下问题:
1.操作员或者系统管理员拒绝了请求;
解决:

 


解决办法:打开“控制面板->管理工具->本地安全策略”,选择“安全设置->本地策略->安全选项”,在右边列表中找到“域控制器:允许服务器操作者计划任务”,将状态改为“已启用”。

2.报错”所指定的账户名称无效“;
如果仅勾选“只在用户登录时运行”,点击“确定”后直接创建成功。并不会遇到如题报错。
如果勾选“不管用户是否登录都要运行”,点击“确定”后弹出账户信息输入界面。这种情况才会遇到这个错误。

3.程序执行一半,自动停止。
解决方法:在任务的“常规”设置中,选“使用最高权限运行”;

解答:在计划任务属性页面,点击“更改用户或组”,输入用户名(比如我的“wahaha”),然后点击“检查名称”,再点击“确定”提交,就可以了。
参考文档:
https://blog.csdn.net/wwy11/article/details/51100432
https://blog.csdn.net/andyguan01_2/article/details/86488311

 

2. 查看当前的锁屏状态,看是不是取消了锁屏?担心锁屏影响的话,执行以下操作。

启用:允许唤醒定时器。

 

 

 

 

最后整理一下:

1.) 操作:启动程序,那三个参数比较重要,程序或脚本:python.exe   添加参数:要执行python文的绝对路径包括文件名     起始于:python.exe所在的路径。

 

 

 

下午又试验了一次,13个ps1脚本,只运行了10个,三个未运行?为什么  1. 电信预审 2. 电信结果  3 焦煤 三个没有运行

 

 

是否能稳定运行,需要时间来验证,接下来的优化思路:

1.) 窗口弄完可以不关闭,保持下午18点再自动关闭,这样就可以一整天验证前一天是否正确了    

2)现在日志文件中的结束时间不是真正的结束时间,应返回bat文件中一个真正原爬取结束的时间。写进日志文件中, 这样才是真正的日志文件。

 

 

跟踪多日:定时任处是好的,问题出现在插入库时,content内容过长,而表里字段又太小插不进去,导致爬取下来但却展示不出来的问题。这个已将字段改成longtext。已解决。

20240104 目前遇到的问题是

1. 每天只爬10条,这个限制不合理,需要放大至30条。

2. 凌晨3点爬取,排除了网络的问题,还是爬不到数据,6个字段,仅爬取到address这一个字段。 标题和发布日期没有爬到。需要建立出错重爬机制。

 

3.  单独一个来源的爬取和清洗不能拆出来执行。

 

 

 

1月5日本有2条,仅爬下来1条,1月6日的数据中只有三个类别,没有跑完都,所以应该要把前一天的子进程,进程完全退出,释放资源状态恢复成准备就绪再开启新的一轮。

20210108==============================================每天18:00准时关闭子进往和浏览器,以方便下一轮爬取========================================

第一种方案:

#Stop-Process -Name "cmd" -Force   #先不关闭cmd,因为bat命令本身就是cmd关了无法运行了。
Stop-Process -Name "powershell" -Force

存到一个close_all.ps1文件中,在bat中执行此ps1文件。

:: 启动第一个 PowerShell 脚本,先关闭所有浏览器窗口及powershell\cmd窗口。
start powershell.exe -ExecutionPolicy Bypass -File "close_all.ps1"

:: 等待几分钟
ping 127.0.0.1 -n 1000>nul

:: 清除上次爬取的内容,开始新一轮爬取。
:: python clear_file.py

  运行报错如下:

Stop-Process : 由于以下错误而无法停止进程“powershell (21780)”: 拒绝访问。

 第二种方案:

tasklist | findstr "powershell"      #找出powershell的PID,然后关闭
taskkill /F /PID 10580

  

 

 关闭了所有的浏览器,现强行taskkill,还是不行。拒绝访问。

还是在本地装个easyspider在本地搞一下吧。先把本地爬虫环境装好。跟线上一致了。

 

 

 

========同一条公告,title相同,发布日期相同,但分类却不同时,校验分类后再去重,否则只取第一条,这样太武断了。=======================

python安装pandas出错,用命令 :python -m pip install pandas  成功安装。      python -m pip install mysql.connector

 

 

 

 

 

 

 

----------------每次爬完后,powershell.exe不能自动关闭需要每天上午来了手动关闭,好麻烦-------------

 

 

发现一个非常好的工具:能定位当前窗口所属的进程。

下载地址

windows工具procexp.exe
十分好用的进程管理工具,可定位弹框插件所属应急,恶意插件卸载。

桌面弹出一些不知名弹框,找不到所属应用可以用process定位弹框所属应用,进行卸载。

 

 

 

最后bat中自动关闭===============================================

::启动爬虫任务

start powershell.exe -ExecutionPolicy Bypass -File "*****zhaobiao.ps1"

::等待1分钟
timeout /t 60

 

@echo off
setlocal enabledelayedexpansion

:: 检查powershell.exe进程是否存在
tasklist /FI "IMAGENAME eq powershell.exe" | findstr /C:"powershell.exe" > nul
if %errorlevel%==0 (
echo powershell.exe 进程正在运行,正在尝试终止...
taskkill /f /im powershell.exe
if %errorlevel%==0 (
echo powershell.exe 进程已成功终止。
) else (
echo 终止powershell.exe 进程失败。
)
) else (
echo powershell.exe 进程未找到。
)


:: 检查powershell.exe进程是否存在
tasklist /FI "IMAGENAME eq conhost.exe" | findstr /C:"conhost.exe" > nul
if %errorlevel%==0 (
echo powershell.exe 进程正在运行,正在尝试终止...
taskkill /f /im conhost.exe
if %errorlevel%==0 (
echo conhost.exe 进程已成功终止。
) else (
echo 终止 conhost.exe 进程失败。
)
) else (
echo conhost.exe 进程未找到。
)

 

 

pause
timeout /t 100000

endlocal

posted @ 2023-12-25 11:22  yoyoma0355  阅读(431)  评论(0编辑  收藏  举报